上帝类代码气味中是否考虑了私有方法?

时间:2017-11-26 10:02:05

标签: java oop pmd

PMD开始警告我在向现有班级添加小型私人方法后拥有神级。

我没有找到任何澄清什么类型的方法被认为是代码气味的原因。它只是说它使用指标做出决定,而这样的类做了太多事情。

从我的观点来看,只要我们遵循单一责任规则,我们就可以拥有任意数量的私人方法。

所以我想知道我的假设是否正确,还是应该遵守PMD警告并进行重构。谢谢!

3 个答案:

答案 0 :(得分:2)

我认为你提到了关键概念:单一责任原则。只要你记住这个概念(并遵循其他SOLID规则),你应该没问题。

我宁愿找到大量的私有方法也是件好事 - 因为你希望坚持单层抽象原则!

当然:当真的有太多的私人方法时,如果有某些"子方面"可能值得一看。值得进入他们自己的不同阶级。

答案 1 :(得分:1)

要完成非常好的GhostCat答案,我会补充一点 上帝对象模式并不仅适用于方法甚至公共方法 它是一种反模式,其中对象(或问题的类来自static成员)知道太多(字段)和/或做太多(方法)。

因此,在同一个类中积累的字段和方法(publicprivate)可能会导致一个类或一个对象成为不受欢迎的神。

  

从我的角度来看,我们可以拥有任意数量的私人方法   只要我们遵循单一责任规则。

API的单一责任原则是一件非常好的事情 但这并不意味着私人处理/字段应该违反这一点 事实上,当一个班级成为真正的“大”时,其成员之间的凝聚力可能会变低,因此可能会出现某些成员之间不合需要的联系。
因此,在其他类中分离不同的处理有助于提高代码的可读性和可维护性。

答案 2 :(得分:1)

关键是当你看到你的类有太多的私有方法时,通常可以将这个功能提取到另一个类,这样你就可以:

  1. 减少代码库中的重复
  2. 提高其可测试性
  3. 所以这个规则是合法的,因为即使你认为你的设计足够稳固,很多时候你的对象组合实际上可能更具结构性。