这是一个简单的问题:我是否应该有一个包含所有类(和子模块)的模块:
module ProjectName
class Something
# code
end
module Abc
# code
end
end
或者只是全球范围内的所有内容:
class Something
# code
end
module Abc
# code
end
答案 0 :(得分:1)
不污染您的全球范围被视为良好做法。将应用程序命名为模块,封装相关行为使其更容易理解,有助于避免命名冲突,并允许您轻松地将部分代码移植到其他应用程序或上下文中。
在Ruby中,它还为您提供了一种存储模块范围常量的自然方式,并且您可以选择将不需要包含对象的方法直接添加到模块中。
在某些语言中,(特别是JavaScript)作用域也会对性能产生影响,因为在全局范围内保留对象可能会阻止它们获得垃圾回收的限定。