何时使用模块以及何时使用全局范围

时间:2015-09-20 12:45:48

标签: ruby module

这是一个简单的问题:我是否应该有一个包含所有类(和子模块)的模块:

module ProjectName

  class Something
    # code
  end

  module Abc
    # code
  end

end

或者只是全球范围内的所有内容:

class Something
  # code
end

module Abc
  # code
end

1 个答案:

答案 0 :(得分:1)

不污染您的全球范围被视为良好做法。将应用程序命名为模块,封装相关行为使其更容易理解,有助于避免命名冲突,并允许您轻松地将部分代码移植到其他应用程序或上下文中。

在Ruby中,它还为您提供了一种存储模块范围常量的自然方式,并且您可以选择将不需要包含对象的方法直接添加到模块中。

在某些语言中,(特别是JavaScript)作用域也会对性能产生影响,因为在全局范围内保留对象可能会阻止它们获得垃圾回收的限定。