神 Class code smell 中是否考虑了私有方法?
Does private methods are considered in the God Class code smell?
在将一个小的私有方法添加到现有 class 后,PMD 开始警告我有上帝 Class。
我没有找到任何说明哪些类型的方法被认为是代码异味的原因。它只是说它使用指标来做出决定,这样的 class 做了太多事情。
从我的角度来看,只要我们遵循单一职责规则,我们就可以拥有任意多的私有方法。
所以我想知道我的假设是否正确,或者我是否应该遵守PMD警告并进行重构。谢谢!
我想你命名了关键概念:单一责任原则。只要你记住这个概念(并且你遵循其他 SOLID 规则)你应该没问题。
我宁愿发现大量私有方法可能是一件好事 - 因为您希望坚持单层抽象原则!
当然:当确实有太多私有方法时,可能值得研究一下是否有某些 "sub aspects" 值得移动到它们自己的不同 类 中。
为了完成非常好的 GhostCat 答案,我要补充一点
上帝对象模式不仅适用于方法甚至 public 方法。
这是一种反模式,其中对象(或 class 因为问题来自 static
成员)知道太多(字段)和/或做太多(方法)。
因此,字段和方法(public
与 private
)在同一个 class 中的积累可能会导致 class 或对象成为不受欢迎的神。
From my point of view we can have as many private methods as we want
as long as we follow the Single Responsibility rule.
API 的单一职责原则是一件非常好的事情。
但这并不意味着 private processing/fields 应该违反这一点。
事实上,当 class 变成真正的 "big" 时,其成员之间的凝聚力可能会变低,因此某些成员之间可能会出现不希望的耦合。
因此,在其他 classes 中分离不同的处理对于提高代码的可读性和可维护性是有意义的。
关键是,当您发现 class 有太多私有方法时,通常可以将此功能提取到另一个 class,这样做您可以:
- 减少代码库中的重复
- 提高其可测试性
所以这个规则是合理的,因为即使你认为你的设计足够 SOLID,很多时候你的对象组合实际上可能更水晶。
在将一个小的私有方法添加到现有 class 后,PMD 开始警告我有上帝 Class。
我没有找到任何说明哪些类型的方法被认为是代码异味的原因。它只是说它使用指标来做出决定,这样的 class 做了太多事情。
从我的角度来看,只要我们遵循单一职责规则,我们就可以拥有任意多的私有方法。
所以我想知道我的假设是否正确,或者我是否应该遵守PMD警告并进行重构。谢谢!
我想你命名了关键概念:单一责任原则。只要你记住这个概念(并且你遵循其他 SOLID 规则)你应该没问题。
我宁愿发现大量私有方法可能是一件好事 - 因为您希望坚持单层抽象原则!
当然:当确实有太多私有方法时,可能值得研究一下是否有某些 "sub aspects" 值得移动到它们自己的不同 类 中。
为了完成非常好的 GhostCat 答案,我要补充一点
上帝对象模式不仅适用于方法甚至 public 方法。
这是一种反模式,其中对象(或 class 因为问题来自 static
成员)知道太多(字段)和/或做太多(方法)。
因此,字段和方法(public
与 private
)在同一个 class 中的积累可能会导致 class 或对象成为不受欢迎的神。
From my point of view we can have as many private methods as we want as long as we follow the Single Responsibility rule.
API 的单一职责原则是一件非常好的事情。
但这并不意味着 private processing/fields 应该违反这一点。
事实上,当 class 变成真正的 "big" 时,其成员之间的凝聚力可能会变低,因此某些成员之间可能会出现不希望的耦合。
因此,在其他 classes 中分离不同的处理对于提高代码的可读性和可维护性是有意义的。
关键是,当您发现 class 有太多私有方法时,通常可以将此功能提取到另一个 class,这样做您可以:
- 减少代码库中的重复
- 提高其可测试性
所以这个规则是合理的,因为即使你认为你的设计足够 SOLID,很多时候你的对象组合实际上可能更水晶。