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.)