Ruby - Naming Convention - буквенный регистр для сокращений в именах классов / модулей? - PullRequest
17 голосов
/ 15 февраля 2012

Мне нужно создать класс, который представляет «SVN» внутри модуля под названием «SCM».Но я не знаю, что такое соглашение при работе с аббревиатурами в Ruby, и не смог найти в Google ничего релевантного, кроме «Случай верблюда».

Должен ли я назвать его SCM::SVN или Scm::Svn?Есть соглашение для этого?

Ответы [ 3 ]

18 голосов
/ 18 февраля 2014

Добавьте следующее к config/initializers/inflections.rb.

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.acronym 'SVN'
end

Теперь запущенный $ rails g model SVN… создаст класс с именем SVN в файле с именем svn.rb и связанной таблицей svns.

13 голосов
/ 15 февраля 2012

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>
3 голосов
/ 15 февраля 2012

Я думаю, что SCM::SVN выглядит лучше (эстетически), и я видел библиотеки, использующие то же соглашение.На самом деле все зависит от того, что, по вашему мнению, читается лучше.

(Однако учтите, что если вы создаете проект Rails и хотите, чтобы этот модуль автоматически загружался из каталога / lib, вам, возможно, придется использовать Scm::Svn.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...