【发布时间】:2009-07-03 06:08:15
【问题描述】:
抽象这种模式的最佳方法是什么:
class MyClass
attr_accessor :foo, :bar
def initialize(foo, bar)
@foo, @bar = foo, bar
end
end
一个好的解决方案应该考虑到超类并且能够处理仍然能够有一个初始化器来做更多的事情。在不牺牲解决方案性能的情况下加分。
【问题讨论】:
-
这真的很模糊。你想抽象它的哪一部分?你想如何抽象它?
-
另外,您可以尝试在这里提问:refactormycode.com
-
我想创建一个可以混合到类中的模块或覆盖 Class 本身,这样我就可以编写一行代码并让它创建访问器和初始化程序。
-
您是否需要能够指定非 attr_accessor 参数才能初始化?您是否设想过签名中超长的属性的世代排序?
-
我不确定...如果创建了新的初始化程序,我想避免丢失由 initialize_with 创建的初始化程序,但我知道这会在方法签名周围引入一些混淆。也许你会这样做: Foo.new(new_arg, new_arg2, :foo => 1, :bar => 2)?这似乎也可能令人困惑。想法?
标签: ruby abstraction