2012-02-15 137 views
15

我需要在名为“SCM”的模块内创建一个代表“SVN”的类。但我不知道在Ruby中处理缩略词时会有什么约定,并且在Google中找不到任何与之相关的内容,除非“Camel case is preferred”。Ruby - 命名约定 - 类/模块名称中缩写词的字母大小写?

我应该叫它SCM::SVN还是Scm::Svn?这是否有一个约定?

+3

Ruby约定是给它一个像[trollop](https://rubygems.org/gems/trollop),[asset_hat](https://github.com/mintdigital/asset_hat)或者甚至Tenpuku根据谷歌翻译日语为Subversion)。 ;-) – 2012-02-15 12:26:06

+1

@MarkThomas有趣的事实:_tenpuku_(転覆)可能意味着“颠覆”,但更常见的用法是[倾覆和翻转](https://www.google.com/search?q=%E8 %BB%A2%E8%A6%86&TBM = isch&BIW = 1438&波黑= 719&SEI = bKs7T-3qDcydmQX1rri8Cw)。现在你知道了。 ;) – brymck 2012-02-15 12:53:40

回答

14

SCM::SVN看起来最好给我。 Rails充满了类似ERB,ORM和OMFGIMATEAPOT的类。这并不是说像JSONSerializer这样的东西。 Ruby的来源也有a bunch of acronyms。最明显的例子是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> 
+0

我没有想到要浏览Ruby源代码并寻找缩略词。非常聪明!我将使用'SCM:SVN'。谢谢! – kikito 2012-02-15 13:12:24

3

我认为SCM::SVN看起来更美观(美学),我也见过使用相同约定的库。这真的只是你认为更好的问题。

(但请注意,如果你正在建设一个Rails项目,并希望该模块从/ lib目录被自动加载,您可能需要使用Scm::Svn)。

+0

关于Rails的好处。谢谢! – kikito 2012-02-15 13:12:56

15

添加以下config/initializers/inflections.rb

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

现在运行$ rails g model SVN…将创建一个名为SVN在名为svn.rb文件和相关的表svns类。

+4

嗯,我的问题是关于一般的ruby,而不是特别的rails,但是你的回答可以帮助其他人。谢谢! – kikito 2014-02-19 15:25:10

+0

谢谢。这使所有的差异。在将其添加到变形器之前和之后尝试'svn'.classify'。在其他语言/平台中,没有这种东西,所以使用可以自动转换的东西是有意义的。但主动支持可以让我写更好看的东西。最终的结果是我更喜欢Ruby。 – 2017-09-15 17:39:33

相关问题