Skip to content

Commit 1a9da75

Browse files
committed
Updated from the upstream.
1 parent 047fae8 commit 1a9da75

File tree

1 file changed

+106
-16
lines changed

1 file changed

+106
-16
lines changed

README-ruRU.md

Lines changed: 106 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -211,15 +211,15 @@
211211
точек с запятыми. Пробелы (по большей части) игнорируются
212212
интерпретатором Руби, но их правильное использование является ключом
213213
к написанию легко читаемого кода.
214-
<sup>[[ссылка](#spaces-operators)]</sup>
214+
<sup>[[ссылка](#spaces-operators)]</sup>
215215

216216
```Ruby
217217
sum = 1 + 2
218218
a, b = 1, 2
219219
class FooError < StandardError; end
220220
```
221221

222-
Единственным исключением для операторов является оператор возведения в степень:
222+
Из этого правила есть несколько исключений. Одним из них является оператор возведения в степень:
223223

224224
```Ruby
225225
# плохо
@@ -229,6 +229,16 @@
229229
e = M * c**2
230230
```
231231

232+
Другим ислючением является косая черта в литералах дробей:
233+
234+
```ruby
235+
# плохо
236+
o_scale = 1 / 48r
237+
238+
# хорошо
239+
o_scale = 1/48r
240+
```
241+
232242
* <a name="spaces-braces"></a>
233243
Не используйте пробел после `(`, `[` или перед `]`, `)`. Вставляйте
234244
пробелы вокруг `{` и перед `}`.
@@ -775,7 +785,7 @@
775785
temperance = Person.new('Temperance', 30)
776786
```
777787

778-
Скобки можно опустить только в следующих случаях:
788+
Всегда опускайте скобки в случаях,
779789

780790
* когда метод вызывается без аргументов:
781791

@@ -813,11 +823,19 @@
813823

814824
# некоторый код
815825
end
826+
```
816827

817-
# плохо
818-
puts(temperance.age)
828+
Скобки можно опускать,
829+
830+
* когда методы имеют в Руби статус ключевого слова, но не являются декларативными:
831+
832+
```Ruby
819833
# хорошо
834+
puts(temperance.age)
835+
system('ls')
836+
# тоже хорошо
820837
puts temperance.age
838+
system 'ls'
821839
```
822840

823841
* <a name="optional-arguments"></a>
@@ -1821,7 +1839,7 @@
18211839
* <a name="named-format-tokens"></a>
18221840
Используйте формат `%<name>s` вместо `%{name}` для поименованных
18231841
переменных в шаблонах, это даст информацию о типе используемого значения.
1824-
<sup>[[link](#named-format-tokens)</sup>
1842+
<sup>[[ссылка](#named-format-tokens)</sup>
18251843

18261844
```Ruby
18271845
# плохо
@@ -2600,9 +2618,47 @@
26002618
end
26012619
```
26022620

2603-
* <a name="modules-vs-classes"></a> Если класс определяет только методы класса,
2604-
то трансформируйте такой класс в модуль. Использовать классы логично в тех
2605-
ситуациях, когда нужно создавать экземпляры класса.
2621+
* <a name="namespace-definition"></a>
2622+
Определяейте (и открывайте заново) классы и модули, определенные в некотором
2623+
пространстве имен, с помощью явного вложения. Оператор разрешения пространства
2624+
(scope resolution) может создать трудные для понимания ситуации из-за
2625+
[лексического определения пространств имен](https://cirw.in/blog/constant-lookup.html)
2626+
в Руби. Пространство имен зависит для модуля от места его определения.
2627+
<sup>[[ссылка](#namespace-definition)]</sup>
2628+
2629+
```Ruby
2630+
module Utilities
2631+
class Queue
2632+
end
2633+
end
2634+
2635+
# плохо
2636+
class Utilities::Store
2637+
Module.nesting # => [Utilities::Store]
2638+
2639+
def initialize
2640+
# Refers to the top level ::Queue class because Utilities isn't in the
2641+
# current nesting chain.
2642+
@queue = Queue.new
2643+
end
2644+
end
2645+
2646+
# хорошо
2647+
module Utilities
2648+
class WaitingList
2649+
Module.nesting # => [Utilities::WaitingList, Utilities]
2650+
2651+
def initialize
2652+
@queue = Queue.new # Refers to Utilities::Queue
2653+
end
2654+
end
2655+
end
2656+
```
2657+
2658+
* <a name="modules-vs-classes"></a>
2659+
Если класс определяет только методы класса, то трансформируйте такой класс
2660+
в модуль. Использовать классы логично в тех ситуациях, когда нужно создавать
2661+
экземпляры класса.
26062662
<sup>[[ссылка](#modules-vs-classes)]</sup>
26072663

26082664
```Ruby
@@ -3615,9 +3671,11 @@
36153671
```Ruby
36163672
# плохо
36173673
name = "Bozhidar"
3674+
name = 'De\'Andre'
36183675

36193676
# хорошо
36203677
name = 'Bozhidar'
3678+
name = "De'Andre"
36213679
```
36223680

36233681
* **Стиль B:** Используйте двойные кавычки в ваших строчных литералах, если они не
@@ -3626,9 +3684,11 @@
36263684
```Ruby
36273685
# плохо
36283686
name = 'Bozhidar'
3687+
sarcasm = "I \"like\" it."
36293688

36303689
# хорошо
36313690
name = "Bozhidar"
3691+
sarcasm = 'I "like" it.'
36323692
```
36333693

36343694
Второй стиль, по некоторым мнениям, более распространен среди разработчиков на
@@ -3759,28 +3819,58 @@
37593819

37603820
```Ruby
37613821
# плохо (используется `String#strip_margin` из Powerpack)
3762-
code = <<-END.strip_margin('|')
3822+
code = <<-RUBY.strip_margin('|')
37633823
|def test
37643824
| some_method
37653825
| other_method
37663826
|end
3767-
END
3827+
RUBY
37683828

37693829
# все еще плохо
3770-
code = <<-END
3830+
code = <<-RUBY
37713831
def test
37723832
some_method
37733833
other_method
37743834
end
3775-
END
3835+
RUBY
37763836

37773837
# хорошо
3778-
code = <<~END
3838+
code = <<~RUBY
37793839
def test
37803840
some_method
37813841
other_method
37823842
end
3843+
RUBY
3844+
```
3845+
3846+
* <a name="heredoc-delimiters"></a>
3847+
Используйте говорящие разделители для HEREDOC. Разделители дают ценную
3848+
информацию о содержании документа. В качестве бонуса вы можете
3849+
получить подсветку кода внутри документа HEREDOC в некоторых редакторах,
3850+
если разделители заданы корректно.
3851+
<sup>[[ссылка](#heredoc-delimiters)]</sup>
3852+
3853+
```ruby
3854+
# плохо
3855+
code = <<~END
3856+
def foo
3857+
bar
3858+
end
37833859
END
3860+
3861+
# хорошо
3862+
code = <<~RUBY
3863+
def foo
3864+
bar
3865+
end
3866+
RUBY
3867+
3868+
# хорошо
3869+
code = <<~SUMMARY
3870+
An imposing black structure provides a connection between the past and
3871+
the future in this enigmatic adaptation of a short story by revered
3872+
sci-fi author Arthur C. Clarke.
3873+
SUMMARY
37843874
```
37853875

37863876
## Даты и время
@@ -4098,7 +4188,7 @@
40984188

40994189
```Ruby
41004190
# плохо
4101-
def method_missing?(meth, *params, &block)
4191+
def method_missing(meth, *params, &block)
41024192
if /^find_by_(?<prop>.*)/ =~ meth
41034193
# много кода, чтобы сделать аналог find_by
41044194
else
@@ -4107,7 +4197,7 @@
41074197
end
41084198

41094199
# хорошо
4110-
def method_missing?(meth, *params, &block)
4200+
def method_missing(meth, *params, &block)
41114201
if /^find_by_(?<prop>.*)/ =~ meth
41124202
find_by(prop, *params, &block)
41134203
else

0 commit comments

Comments
 (0)