【问题标题】:Why do some Ruby projects have a file with just 'require' statements为什么某些 Ruby 项目的文件中只有“require”语句
【发布时间】:2014-08-16 14:25:12
【问题描述】:

我正在查看不同的 Ruby 客户端实现,有时我会找到像 this one 这样的文件:

require 'addressable/uri'
require 'twitter/configuration'
require 'twitter/cursor'
require 'twitter/direct_message'
require 'twitter/entity'
require 'twitter/entity/hashtag'
# ... Snipped for brevity; there's 31 lines like this.

除了require 其他文件什么都不做。为什么要这样做?

【问题讨论】:

  • 为什么不呢? ......
  • @sawa 这是一个非常合理的问题。仅仅因为人们事并不意味着有充分的理由。了解为什么很重要。
  • 这就像拥有一个只包含其他头文件的 C/C++ 头文件。这是为了方便。

标签: ruby require


【解决方案1】:

它只是一个调用其他需求的包装器,因此一个用户脚本不会需要所有依赖项。有时,一个包宁愿将其功能划分在不同的文件中,而不是将其所有代码放在一个文件中。进行更改和跟踪错误也更容易。将更改提交到存储库也可能更轻松。

【讨论】:

    【解决方案2】:

    Ruby Gems 和库通常合并 Require 语句

    这是 Ruby 库文件中相当常见的习惯用法。例如,考虑由bundler gem 命令创建的以下模板:

    $ bundler gem foo
    $ cat foo/lib/foo.rb
    require "foo/version"
    
    module Foo
      # Your code goes here...
    end
    

    bundler 模板希望您使用各种 require 语句填充此文件,以从 foo/lib/foo/ 目录中提取代码。例如:

    require "foo/version"
    
    module Foo
      require 'foo/bar' # pull in lib/foo/bar.rb
      require 'foo/baz' # pull in lib/foo/baz.rb
    end
    

    如果您愿意,可以将 100% 的代码放入 lib/foo.rb。但是,拆分文件以使每个文件都专注于单独的关注点通常被认为是一种良好的编程习惯,而主库文件是合并大量 Kernel#require 语句的非常方便的地方。

    【讨论】:

      猜你喜欢
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多