【问题标题】:Should one use dashes or underscores when naming a gem with more than one word?在命名包含多个单词的宝石时,是否应该使用破折号或下划线?
【发布时间】:2011-01-14 03:18:13
【问题描述】:

当 gem 名称包含多个单词时,我对 gem 命名约定感到困惑。

  • thinking-sphinx 是 gem 的名称,但该 gem 的基本 *.rb 文件是 lib/thinking_sphinx.rb(下划线)

  • acts-as-taggable-on 是 gem 的名称,基础 *.rb 文件称为 lib/acts-as-taggable-on.rb(连字符)

  • factory_girl 在 gem 名称和基础 *.rb 文件的名称中都使用下划线

使用下划线或连字符是否重要?这里有什么新的共识吗?

【问题讨论】:

    标签: ruby naming-conventions


    【解决方案1】:

    Eric Hodel 对此有一篇博文:A Project Naming Recommendation

    Rails 巩固了 将 CamelCase 类名映射到 带下划线的文件名(类 IMAPProcesor 定义在 imap_processor.rb)。使用下划线 宝石名称使人们很容易 找出需要什么文件(相同 作为项目名称)或什么类 在 ri 中查找的名称。

    如果我有插件 gem 或扩展 我将添加子项目的名称 用破折号。如果我想添加一个新的 大通银行的 imap_to_rss 处理程序 电子邮件,宝石将被命名 imap_to_rss-追逐。

    【讨论】:

    • 这与官方 Ruby Gems Guides -Consistent Naming 中给出的建议一致。
    • yajl-ruby 或 bcrypt-ruby,它们是现有 C 库的 Ruby 包装器呢?我确实想要在我的代码中添加一个简单的 require 'bcrypt',但我不想将我的 github 项目命名为“yajl”或“bcrypt”,因为这些(可能)已经用于原始 C 库。
    • 此指向 Eric Hodel 文章的链接现已失效。我试图在网上找到它,但在谷歌 3 分钟后没有找到。
    【解决方案2】:

    按照here 的建议,这里有一张表格,说明事情会如何崩溃:

    Gem name Require statement Main class or module
    fancy_require require 'fancy_require' FancyRequire
    ruby_parser require 'ruby_parser' RubyParser
    net-http-persistent require 'net/http/persistent' Net::HTTP::Persistent
    rdoc-data require 'rdoc/data' RDoc::Data
    autotest-growl require 'autotest/growl' Autotest::Growl
    net-http-digest_auth require 'net/http/digest_auth' Net::HTTP::DigestAuth

    【讨论】:

    • 我创建了一个名为 tout_suite 的 gem,但我仍然必须使用 require 'tout/suite' 来要求它。任何想法为什么?我正在使用 ruby​​ 2.0 和 rails 4.1.1
    • @gardenofwine,主类或模块是什么?你的 gem 的文件结构是什么样的?这些东西决定了宝石“应该”命名什么,而不是相反。
    • 这对我来说很好用。我创建了名为 calabash-shared 的 gem,我必须要求 'calabash/shared' - 查看这篇文章以创建 gem smashingmagazine.com/2014/04/08/…
    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 2018-09-13
    • 2017-08-28
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 2020-11-01
    • 2021-11-26
    相关资源
    最近更新 更多