我找到了一个 mixin 的示例,它对包含类具有哪些实例变量进行假设。像这样的事情:
module Fooable
def calculate
@val_one + @val_two
end
end
class Bar
attr_accessor :val_one, :val_two
include Fooable
end
我找到了支持和反对这是否是一个好的做法的论据。显而易见的选择是通过val_one
and val_two
作为参数,但这似乎并不常见,并且拥有更多参数化方法可能是一个缺点。
关于 mixin 对类状态的依赖是否存在传统观点?从实例变量读取值与将它们作为参数传递的优点/缺点是什么?或者,如果您开始修改实例变量而不是仅仅读取它们,答案会改变吗?
在模块中假设包含/前置它的类的一些属性根本不是问题。通常都是这样做的。事实上,Enumerable
模块假设包含/前置它的类有一个each
方法,并且有许多依赖于它的方法。同样,Comparable
模块假设包含/前置类具有<=>
。我无法立即给出实例变量的示例,但在这一点上,方法和实例变量之间没有重大区别;对于实例变量也应该这样说。
不使用实例变量传递参数的缺点是您的方法调用将变得冗长且不太灵活。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)