Ruby - Naming Convention - регистр букв для аббревиатур в именах классов/модулей?
Мне нужно создать класс, представляющий "SVN" внутри модуля под названием "SCM". Но я не знаю, что такое конвенция при работе с акронимами в Ruby и не может найти что-либо релевантное в Google, за исключением случаев, когда предпочтение отдается верблюду.
Должен ли я назвать его SCM::SVN
или SCM::SVN
? Есть ли соглашение для этого?
Ответы
Ответ 1
SCM::SVN
выглядит лучше всего для меня. Rails полон таких классов, как ERB, ORM и OMFGIMATEAPOT. И это не говоря уже о таких вещах, как JSONSerializer. Источник Ruby имеет кучу сокращений. Самый очевидный пример для меня - YAML
. Стандарт, который я видел, это высвобождать буквы для CamelCase, но, как правило, их не обводят (хотя Rails имеет мнения о названиях моделей).
Если у вас есть grep и исходный код, вы можете увидеть множество примеров с чем-то вроде
grep -r 'class [A-Z]\{3,\}' <path/to/source>
# or, if you only want acronyms and nothing like YAMLColumn:
grep -rw 'class [A-Z]\{3,\}' <path/to/source>
Ответ 2
Добавьте в config/initializers/inflections.rb
следующее.
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'SVN'
end
Теперь запущенный $ rails g model SVN…
создаст класс с именем SVN
в файле с именем svn.rb
и связанной таблицей svns
.
Ответ 3
Я думаю, что SCM::SVN
выглядит лучше (эстетично), и я видел библиотеки, которые используют одно и то же соглашение. Это действительно вопрос того, что, по вашему мнению, читается лучше.
(Тем не менее, обратите внимание, что если вы строите проект Rails и хотите, чтобы этот модуль был автоматически загружен из каталога /lib, вам может потребоваться использовать SCM::SVN
.)