多少 :attr_accessor 对于 class 来说太多了?
How many :attr_accessor are too many for a class?
有多少:attr_accessor
对于一个class
来说太多了,或者,这样的方法有多少"right"个(如果有一个"right number")?
所以,作为一个简单的例子,
class Example
:attr_accessor :a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k
# instance methods here...
end
显然,有时需要大量此类变量和相应的访问器(也许您会在 ActiveRecord::Model
中看到这一点);但我正在寻找一个 体面的启发式 来确定是否根据 class.
中实例变量的原始数量进行重构
非常感谢突出显示 and/or 总结有关此设计问题的文章、演示文稿、书籍等的答案。
我不认为有太多属性访问器这样的东西,也没有理由重构这样的代码。如果所有这些属性都被那个 class 使用和需要,那么您可以拥有尽可能多的东西。
但是,这可能是打破 single responsibility principle 的迹象,因此需要注意这一点。
在面向对象编程中,如果服务于class的方法在很多方面趋于相似,那么就可以说class具有高内聚性。在高度内聚的系统中,代码的可读性和可重用性得到提高,同时复杂性保持可控。
维基在这里:read me
这本书:
Clean code
有多少:attr_accessor
对于一个class
来说太多了,或者,这样的方法有多少"right"个(如果有一个"right number")?
所以,作为一个简单的例子,
class Example
:attr_accessor :a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k
# instance methods here...
end
显然,有时需要大量此类变量和相应的访问器(也许您会在 ActiveRecord::Model
中看到这一点);但我正在寻找一个 体面的启发式 来确定是否根据 class.
非常感谢突出显示 and/or 总结有关此设计问题的文章、演示文稿、书籍等的答案。
我不认为有太多属性访问器这样的东西,也没有理由重构这样的代码。如果所有这些属性都被那个 class 使用和需要,那么您可以拥有尽可能多的东西。
但是,这可能是打破 single responsibility principle 的迹象,因此需要注意这一点。
在面向对象编程中,如果服务于class的方法在很多方面趋于相似,那么就可以说class具有高内聚性。在高度内聚的系统中,代码的可读性和可重用性得到提高,同时复杂性保持可控。
维基在这里:read me
这本书: Clean code