gpt4 book ai didi

ruby - mixin 是否应该对它们的包含类做出假设?

转载 作者:数据小太阳 更新时间:2023-10-29 07:22:54 26 4
gpt4 key购买 nike

我发现了一个 mixin 的例子,它对包含的类有哪些实例变量进行了假设。像这样:

module Fooable
def calculate
@val_one + @val_two
end
end

class Bar
attr_accessor :val_one, :val_two
include Fooable
end

我找到了支持和反对这是否是一种好做法的论点。明显的替代方法是将 val_oneval_two 作为参数传递,但这似乎并不常见,并且具有更多参数化方法可能是一个缺点。

是否存在关于 mixin 对类状态的依赖的传统观点?从实例变量读取值与将它们作为参数传递有哪些优点/缺点?或者,如果您开始修改实例变量而不是仅仅读取它们,答案会改变吗?

最佳答案

在模块中假设包含/前置它的类的一些属性根本不是问题。通常是这样做的。事实上,Enumerable模块假定包含/前置它的类具有 each方法,并且有许多依赖于它的方法。同样,Comparable模块假定包含/前置类具有 <=> .我不能立即想出一个实例变量的例子,但是在这一点上,方法和实例变量之间没有关键的区别;对于实例变量也应该这样说。

在不使用实例变量的情况下传递参数的缺点是您的方法调用会冗长且不够灵活。

关于ruby - mixin 是否应该对它们的包含类做出假设?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36723178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com