我正在尝试通过应用单一责任原则来瘦身。我将许多通用代码挑选到 mixin 中,然后将它们包含在多个类中。但是,我遇到了一个奇怪的问题,即局部变量与包含 mixin 的类的方法名称(或 attr_accessors)发生冲突。例如:
module MyAwesomeMixin
def update_total
my_total = self.pricing_items.reduce(0) {|sum, x| sum + x} # this borks if the "host class" has a method called my_total=
total = my_total
end
end
my_total=
如果“宿主类”有一个名为“如何确保my_total
变量完全在update_total
方法范围内并且与它周围的环境完全无关”的方法,上面的代码片段会产生完全意想不到的后果?