Ruby / Basics /

Naming Conventions

Соглашение об именовании - это набор правил для выбора последовательности символов (или просто имени), используемых для идентификаторов, обозначающих переменные, типы, функции и другие сущности в исходном коде и документации.

Использование 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