多少 :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