如何避免类在 mixin 多个模块时,出现同名方法被覆盖的情况?如果确实要用到这些含有同名方法的相关模块,如何规避可能出现的错误情况?先谢谢各位的解答。
通过测试确保软件的行为符合预期,mixin 的时候是很难预知方法被覆盖的,发现后自然就是想办法避免方法名的 override 了。
#1 楼 @lgn21st 哦,我现在能想到的方法是通过 include 顺序控制具体从哪个模块导入同名方法,还有其他途径么
想要预知,只能通过测试,当然也有测试识别不出来的情况~
想避免错误的话,可以再套一层 module 做 namespace, 或者在 included 的类里面写个 wrapper
define_method?也许可以用。可能需要一个模块的方法列表,然后判断。 《元编程》书里有个 rake 打开类的例子,可以参考下。