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