Skip to content

Commit 0594be0

Browse files
committed
🎨 Improving style
Took 14 minutes
1 parent 5cbb555 commit 0594be0

File tree

1 file changed

+32
-32
lines changed

1 file changed

+32
-32
lines changed

_ru/cheatsheets/index.md

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,19 @@ language: ru
2929
</tr>
3030
<tr>
3131
<td><span class="label success">Хорошо</span><br><code class="highlighter-rouge">val x = 5</code><br /> <span class="label important">Плохо</span><br><code class="highlighter-rouge">x=6</code></td>
32-
<td>постоянная</td>
32+
<td>константа</td>
3333
</tr>
3434
<tr>
3535
<td><code class="highlighter-rouge">var x: Double = 5</code></td>
36-
<td>явное указание типа переменной</td>
36+
<td>явное указание типа</td>
3737
</tr>
3838
<tr>
3939
<td><span id="functions" class="h2">функции</span></td>
4040
<td> </td>
4141
</tr>
4242
<tr>
4343
<td><span class="label success">Хорошо</span><br> <code class="highlighter-rouge">def f(x: Int) = { x*x }</code><br /> <span class="label important">Плохо</span><br> <code class="highlighter-rouge">def f(x: Int) { x*x }</code></td>
44-
<td>объявление функции <br /> незаметная ошибка: без = используется процедурный стиль объявления, в котором возвращаемый тип обязательно "Unit". Это может ввести в заблуждение, избегайте такой стиль</td>
44+
<td>объявление функции <br /> незаметная ошибка: без = это процедура с возвращаемым типом "Unit". Такое может ввести в заблуждение</td>
4545
</tr>
4646
<tr>
4747
<td><span class="label success">Хорошо</span><br> <code class="highlighter-rouge">def f(x: Any) = println(x)</code><br /> <span class="label important">Плохо</span><br> <code class="highlighter-rouge">def f(x) = println(x)</code></td>
@@ -61,15 +61,15 @@ language: ru
6161
</tr>
6262
<tr>
6363
<td><code class="highlighter-rouge">(1 to 5).map(_*2)</code> vs.<br /> <code class="highlighter-rouge">(1 to 5).reduceLeft( _+_ )</code></td>
64-
<td>анонимная функция: квантификатор (подчеркивание) означает что на это место подставляется каждый элемент из диапазона (от 1 до 5).</td>
64+
<td>анонимная функция: подчеркивание указывает место подставляемого элемента.</td>
6565
</tr>
6666
<tr>
6767
<td><code class="highlighter-rouge">(1 to 5).map( x =&gt; x*x )</code></td>
68-
<td>анонимная функция: слева от =&gt; задается имя для подставляемого элемента, которое мы можем в дальнейшем переиспользовать</td>
68+
<td>анонимная функция: слева от =&gt; задается имя подставляемого элемента, чтоб его можно было переиспользовать</td>
6969
</tr>
7070
<tr>
7171
<td><span class="label success">Хорошо</span><br> <code class="highlighter-rouge">(1 to 5).map(2*)</code><br /> <span class="label important">Плохо</span><br> <code class="highlighter-rouge">(1 to 5).map(*2)</code></td>
72-
<td>анонимная функция: связанный инфиксный метод. Ради четкого понимания лучше использовать явное указание позиции подставляемого элемента в стиле <code class="highlighter-rouge">2*_</code>.</td>
72+
<td>анонимная функция: запись с использованием инфиксного стиля. Ради четкого понимания лучше использовать явное указание позиции подставляемого элемента в стиле <code class="highlighter-rouge">2*_</code>.</td>
7373
</tr>
7474
<tr>
7575
<td><code class="highlighter-rouge">(1 to 5).map { x =&gt; val y=x*2; println(y); y }</code></td>
@@ -101,15 +101,15 @@ language: ru
101101
</tr>
102102
<tr>
103103
<td><code class="highlighter-rouge">def mapmake[T](g:T=&gt;T)(seq: List[T]) = seq.map(g)</code></td>
104-
<td>Обобщенный тип.</td>
104+
<td>обобщенный тип.</td>
105105
</tr>
106106
<tr>
107107
<td><code class="highlighter-rouge">5.+(3); 5 + 3</code> <br /> <code class="highlighter-rouge">(1 to 5) map (_*2)</code></td>
108-
<td>инфиксный тип записи (синтаксический сахар - можно не указывать точку и скобки).</td>
108+
<td>инфиксный стиль.</td>
109109
</tr>
110110
<tr>
111111
<td><code class="highlighter-rouge">def sum(args: Int*) = args.reduceLeft(_+_)</code></td>
112-
<td>звездочка означает произвольное количество аргументов.</td>
112+
<td>функция с переменным числом аргументов.</td>
113113
</tr>
114114
<tr>
115115
<td><span id="packages" class="h2">пакеты</span></td>
@@ -141,15 +141,15 @@ language: ru
141141
</tr>
142142
<tr>
143143
<td><code class="highlighter-rouge">(1,2,3)</code></td>
144-
<td>упорядоченный набор фиксированной длины 3 (кортеж). (<code class="highlighter-rouge">Tuple3</code>)</td>
144+
<td>кортеж размера 3. (<code class="highlighter-rouge">Tuple3</code>)</td>
145145
</tr>
146146
<tr>
147147
<td><code class="highlighter-rouge">var (x,y,z) = (1,2,3)</code></td>
148-
<td>разложение на отдельные параметры: набор раскладывается через проверку по шаблону на отдельные элементы x, y и z.</td>
148+
<td>разложение на отдельные элементы: кортеж раскладывается на элементы x, y и z используя сопоставление с образцом.</td>
149149
</tr>
150150
<tr>
151151
<td><span class="label important">Плохо</span><br><code class="highlighter-rouge">var x,y,z = (1,2,3)</code></td>
152-
<td>незаметная ошибка: каждая переменная будет приравнена к упорядоченному набору.</td>
152+
<td>незаметная ошибка: каждой переменной будет присвоено по кортежу.</td>
153153
</tr>
154154
<tr>
155155
<td><code class="highlighter-rouge">var xs = List(1,2,3)</code></td>
@@ -161,23 +161,23 @@ language: ru
161161
</tr>
162162
<tr>
163163
<td><code class="highlighter-rouge">1 :: List(2,3)</code></td>
164-
<td>объединение в последовательность.</td>
164+
<td>добавление к списку.</td>
165165
</tr>
166166
<tr>
167167
<td><code class="highlighter-rouge">1 to 5</code> <em>тоже что и</em> <code class="highlighter-rouge">1 until 6</code> <br /> <code class="highlighter-rouge">1 to 10 by 2</code></td>
168168
<td>задание диапазона (синтаксический сахар).</td>
169169
</tr>
170170
<tr>
171171
<td><code class="highlighter-rouge">()</code> <em>(пустые скобки)</em></td>
172-
<td>отдельный член типа Unit используемый для указание отсутствия возвращаемого результата (тоже что C/Java void).</td>
172+
<td>одиночный член типа Unit (тоже что и void в C/Java).</td>
173173
</tr>
174174
<tr>
175-
<td><span id="control_constructs" class="h2">конструкции для контроля</span></td>
175+
<td><span id="control_constructs" class="h2">управляющие структуры</span></td>
176176
<td> </td>
177177
</tr>
178178
<tr>
179179
<td><code class="highlighter-rouge">if (check) happy else sad</code></td>
180-
<td>задание условий.</td>
180+
<td>условие.</td>
181181
</tr>
182182
<tr>
183183
<td><code class="highlighter-rouge">if (check) happy</code>
@@ -207,45 +207,45 @@ breakable {
207207
<td><code class="highlighter-rouge">for (x &lt;- xs if x%2 == 0) yield x*10</code>
208208
<br><em><strong>тоже что и</strong></em><br>
209209
<code class="highlighter-rouge">xs.filter(_%2 == 0).map(_*10)</code></td>
210-
<td>for представление: работает через набор функции с filter/map</td>
210+
<td>for-выражение: выражается набором с filter/map</td>
211211
</tr>
212212
<tr>
213213
<td><code class="highlighter-rouge">for ((x,y) &lt;- xs zip ys) yield x*y</code>
214214
<br><em><strong>тоже что и</strong></em><br>
215215
<code class="highlighter-rouge">(xs zip ys) map { case (x,y) =&gt; x*y }</code></td>
216-
<td>for представление: когда слева от &lt;- стоит шаблон (в данном случае это набор из 2х элементов x, y), то происходит распаковка по этому шаблону</td>
216+
<td>for-выражение: извлечение элементов с последующим вычислением</td>
217217
</tr>
218218
<tr>
219219
<td><code class="highlighter-rouge">for (x &lt;- xs; y &lt;- ys) yield x*y</code>
220220
<br><em><strong>тоже что и</strong></em><br>
221221
<code class="highlighter-rouge">xs flatMap {x =&gt; ys map {y =&gt; x*y}}</code></td>
222-
<td>for представление: объединение нескольких выражений через ; </td>
222+
<td>for-выражение: перекрестное объединение</td>
223223
</tr>
224224
<tr>
225225
<td><pre class="highlight"><code>for (x <- xs; y <- ys) {
226226
println("%d/%d = %.1f".format(x, y, x/y.toFloat))
227227
}</code></pre></td>
228-
<td>for представление: императивно<br /><a href="http://java.sun.com/javase/6/docs/api/java/util/Formatter.html#syntax">sprintf-style</a></td>
228+
<td>for-выражение: императивно<br /><a href="http://java.sun.com/javase/6/docs/api/java/util/Formatter.html#syntax">sprintf-style</a></td>
229229
</tr>
230230
<tr>
231231
<td><pre class="highlight"><code>for (i <- 1 to 5) {
232232
println(i)
233233
}</code></pre></td>
234-
<td>for представление: обход диапазона (от 1 до 5) включая его верхнюю границу </td>
234+
<td>for-выражение: обход диапазона (от 1 до 5) включая его верхнюю границу </td>
235235
</tr>
236236
<tr>
237237
<td><pre class="highlight"><code>for (i <- 1 until 5) {
238238
println(i)
239239
}</code></pre></td>
240-
<td>for представление: обход диапазона (от 1 до 5) не включая его верхнюю границу</td>
240+
<td>for-выражение: обход диапазона (от 1 до 5) не включая его верхнюю границу</td>
241241
</tr>
242242
<tr>
243-
<td><span id="pattern_matching" class="h2">проверка по шаблону</span></td>
243+
<td><span id="pattern_matching" class="h2">сопоставление с примером</span></td>
244244
<td> </td>
245245
</tr>
246246
<tr>
247247
<td><span class="label success">Хорошо</span><br> <code class="highlighter-rouge">(xs zip ys) map { case (x,y) =&gt; x*y }</code><br /> <span class="label important">Плохо</span><br> <code class="highlighter-rouge">(xs zip ys) map( (x,y) =&gt; x*y )</code></td>
248-
<td>используйте ключевое слово case при передачи аргументов в функцию для проверки по шаблону.</td>
248+
<td>используйте ключевое слово case при передачи аргументов в функцию для запуска механизма сопоставления с примером.</td>
249249
</tr>
250250
<tr>
251251
<td><span class="label important">Плохо</span><br>
@@ -254,7 +254,7 @@ Some(3) match {
254254
case Some(v42) => println("42")
255255
case _ => println("Not 42")
256256
}</code></pre></td>
257-
<td>“v42” интерпретировано как имя для <b>новой</b> константы любого типа, поэтому “42” выведено.</td>
257+
<td>“v42” интерпретировано как имя для <b>новой</b> константы любого типа, поэтому напечатано “42”.</td>
258258
</tr>
259259
<tr>
260260
<td><span class="label success">Хорошо</span><br>
@@ -263,7 +263,7 @@ Some(3) match {
263263
case Some(`v42`) => println("42")
264264
case _ => println("Not 42")
265265
}</code></pre></td>
266-
<td>”`v42`” с обратными кавычками интерпретируется как указание на значение существующей константы <code class="highlighter-rouge">v42</code>, отображается “Not 42”.</td>
266+
<td>”`v42`” с обратными кавычками интерпретируется как указание на значение существующей константы <code class="highlighter-rouge">v42</code>, напечатано “Not 42”.</td>
267267
</tr>
268268
<tr>
269269
<td><span class="label success">Хорошо</span><br>
@@ -272,7 +272,7 @@ Some(3) match {
272272
case Some(UppercaseVal) => println("42")
273273
case _ => println("Not 42")
274274
}</code></pre></td>
275-
<td><code class="highlighter-rouge">UppercaseVal</code> однако константы, имена которых начинаются с заглавной буквы, в проверке по шаблону проверяются на совпадение значения. Поэтому при проверке <code class="highlighter-rouge">UppercaseVal</code> на совпадение с <code class="highlighter-rouge">3</code>, выводится “Not 42”.</td>
275+
<td><code class="highlighter-rouge">UppercaseVal</code> однако константы, имена которых начинаются с заглавной буквы, сопоставляются по значению. Поэтому при сопоставлении <code class="highlighter-rouge">UppercaseVal</code> с <code class="highlighter-rouge">3</code>, выводится “Not 42”.</td>
276276
</tr>
277277
<tr>
278278
<td><span id="object_orientation" class="h2">Работа с объектами</span></td>
@@ -302,19 +302,19 @@ Some(3) match {
302302
</tr>
303303
<tr>
304304
<td><code class="highlighter-rouge">abstract class D { ... }</code></td>
305-
<td>задание абстрактного класса (не создаваемого, только наследуемого)</td>
305+
<td>объявление абстрактного класса (не создаваемого, только наследуемого)</td>
306306
</tr>
307307
<tr>
308308
<td><code class="highlighter-rouge">class C extends D { ... }</code></td>
309-
<td>задание унаследованного класса.</td>
309+
<td>объявление класса с наследованием.</td>
310310
</tr>
311311
<tr>
312312
<td><code class="highlighter-rouge">class D(var x: R)</code><br /><code class="highlighter-rouge">class C(x: R) extends D(x)</code></td>
313313
<td>наследование класса с конструированием параметров. </td>
314314
</tr>
315315
<tr>
316316
<td><code class="highlighter-rouge">object O extends D { ... }</code></td>
317-
<td>задание объекта существующего в единственном экземпляре (сингэлтон) на основе другого класса.</td>
317+
<td>объявление объекта одиночки (Singleton) на основе другого класса.</td>
318318
</tr>
319319
<tr>
320320
<td><code class="highlighter-rouge">trait T { ... }</code><br /><code class="highlighter-rouge">class C extends T { ... }</code><br /><code class="highlighter-rouge">class C extends D with T { ... }</code></td>
@@ -327,15 +327,15 @@ Some(3) match {
327327
</tr>
328328
<tr>
329329
<td><code class="highlighter-rouge">class C extends D { override def f = ...}</code></td>
330-
<td>во избежании ошибок при наследовании и создании методов с одинаковыми названиями необходимо указывать override.</td>
330+
<td>при наследовании и создании методов с одинаковыми именами необходимо указывать override.</td>
331331
</tr>
332332
<tr>
333333
<td><code class="highlighter-rouge">new java.io.File("f")</code></td>
334334
<td>создание объекта.</td>
335335
</tr>
336336
<tr>
337337
<td><span class="label important">Плохо</span><br> <code class="highlighter-rouge">new List[Int]</code><br /> <span class="label success">Хорошо</span><br> <code class="highlighter-rouge">List(1,2,3)</code></td>
338-
<td>ошибка: List - это абстрактный класс<br />вместо этого используйте объект List (вызываемый без new) который создает новые классы типа List</td>
338+
<td>ошибка: List - это абстрактный класс<br />вместо этого по соглашению обычно используется объект с именем как у абстрактного типа, который уже создает классы</td>
339339
</tr>
340340
<tr>
341341
<td><code class="highlighter-rouge">classOf[String]</code></td>

0 commit comments

Comments
 (0)