【发布时间】:2011-11-26 07:54:37
【问题描述】:
我正在尝试清理我们的命名空间。基本上我们的设置有点像
class myClass
include myModule1
include myModule2
@important_var #critical instance variable
基本上,@important_var 是一个 telnet 处理程序,几乎所有方法都需要使用它。这适用于现在的设置方式。不幸的是 myModule1 & myModule2 变得越来越大。所以我不断遇到方法的命名空间冲突。
我很想使用模块包装器访问方法,例如:
myClass_instance.myModule1.a_method
但我不知道如何做到这一点或其他一些更简洁的名称间距想法?
【问题讨论】:
-
类和模块必须以大写字母开头。在你的情况下:myClass -> MyClass, myModule1 -> MyModule1...
-
你可以用
m1_开始MyModule1的每个方法 -
没有看到代码很难说,但从你的描述来看,听起来需要进行一些重构。 - 您能否将您的方法拆分为直接需要@important_var 的较低级别的管道,并将其他方法与它隔离开来? - 班级真的只有一个责任吗?或者你可以分开吗?等
-
@knut 谢谢..是的,我把名字中的大写字母弄乱了
-
有点晚了,但这听起来是学习对象聚合和组合的理想时机。它有助于保持事物井井有条而不会弄乱你的命名空间,如果你的组件是从接口继承的,你的代码就会变得不那么紧密......
标签: ruby module namespaces mixins