我是Ruby的新手,但是已经浏览了一些源代码。我在一些源代码中遇到了如下所示的结构(模块的名称,类的名称,而不是真实的)
module ModuleOne
class MyClass
module CommonModule
# code ....
end # module CommonModule
end # class MyClass
end # module ModuleOne
或者这个例子
module ModuleOne
class MyClass
class MyClassTwo
#code ............
end #class MyClassTwo
end #class MyClass
end #module ModuleOne
从我的阅读到目前为止,我知道在模块中包装类,但我还没有听说过上面所示的包装(例如模块中的模块或类中的类)。我能问一下,1. 这是好的做法吗?2. 以这种方式构建代码的优势是什么?
感谢您的任何评论或指点
戴夫嵌套是为了封装常量,这些模块是特殊情况。换句话说,它们用于命名空间。当您希望某个特定模块只能在某个模块的上下文中访问时,您应该进行嵌套。通过这样做,默认情况下,该模块将无法从外部访问;您必须为名称空间添加前缀才能做到这一点。当你有太多的嵌套层,或者当模块体很长时,在代码中很难遵循它,所以在这种情况下,一个好的方法是编写整个命名空间。
module ModuleOne
...
end
class ModuleOne::MyClass
...
end
class ModuleOne::MyClass::MyClassTwo
...
end