Соглашение об именовании - это набор правил для выбора последовательности символов (или просто имени), используемых для идентификаторов, обозначающих переменные, типы, функции и другие сущности в исходном коде и документации.
Использование CamelCase для классов и модулей. (акронимы, такие как HTTP, RFC, XML, следует писать заглавными буквами) -
# bad class names
Someclass
Some_Class
SomeXml
XmlSomething
# good class names
SomeClass
SomeXML
XMLSomething
Использование snake_case для символов, методов и переменных -
# bad names
:'some symbol'
:SomeSymbol
:someSymbol
someVar = 5
someMethod
SomeMethod
# good names
:some_symbol
some_var = 5
some_method
Использование snake_case для файлов и директорий -
# bad names
someDir/someFile.rb
SomeDir/SomeFile.rb
Some_Dir/Some_File.rb
# good names
some_dir/some_file.rb
Использование SCREAMING_SNAKE_CASE для других констант (тех, которые не ссылаются на классы и модули) -
# bad name
SomeConstant= 5
# good name
SOME_CONSTANT = 5
Нераздельные цифры и буквы в символах, методах и переменных -
# bad names
:some_sym_1
some_var_1 = 1
var_10 = 10
some_method_1
# good names
:some_sym1
some_var1 = 1
var10 = 10
some_method1
Названия методов-предикатов (возвращающих логическое значение) заканчиваются знаком (?)) -
# bad
def even(value)
end
# good
def even?(value)
end
Названия потенциально опасных методов (изменяющих self или аргументы), если существует безопасная версия этого метода, заканчиваются знаком (!)) -
# bad - there is no matching 'safe' method
class Person
def update!
end
end
# good
class Person
def update
end
end
# good
class Person
def update!
end
def update
end
end
В начало названия предикативных методов не добавляются вспомогательные глаголы, такие как is, does, can или has -
# bad
def is_tall?
end
def can_play_basketball?
end
def does_like_candy?
end
# good
def tall?
end
def basketball_player?
end
def likes_candy?
end
В названия неиспользуемых параметров блока и локальных переменных добавляется префикс _ -
# bad
result = hash.map { |k, v| v + 1 }
def something(x)
unused_var, used_var = something_else(x)
end
# good
result = hash.map { |_k, v| v + 1 }
def something(collection)
_unused_variable, used_variable = something_else(collection)
end
result = hash.map { |_, v| v + 1 }
def something(collection)
_, used_variable = something_else(collection)
end