有太多课程吗?

use*_*206 14 oop design-patterns class

在开发时,您何时可以确定应用程序中是否包含许多不必要的类?你应该有多少课程有一定的限制?

Dav*_*vid 22

真的没有"太多课程"这样的事情.什么可以成为一个问题是"太多类做同样的事情."

如果您觉得代码库中的类太多,那么审核的好方法就是添加一些新的需求.任何迫使你对代码进行一些更改的东西.(当然,在源代码控制的一个单独的分支中.)进行这些更改有多难?相对简单的更改是否需要修改吨和吨类?如果是这种情况那么你很有可能会有太多,但问题不在于数字本身.

在很多情况下,这主要取决于个人偏好.在代码重用和代码去耦之间经常需要权衡.通过分离出可能的每一个问题并拥有大量的小班级,你可以解除所有其他问题.但是,您经常发现在这种情况下您必须重复代码,因为很多代码可能会"做同样的事情",但原因略有不同.

另一方面,如果你坚持不在代码中重复任何东西,那么当你得到更少的类时,你也常常会得到更多的耦合,因为单个类对任何需要类似功能的代码都有多重责任.

在大多数情况下,底线是抵制变革.耦合与重用是人们可以争论的长度,但软件刚性是争论转化为实际努力(金钱)的地方.测试对代码进行更改的难度.然后尝试以您认为更接受变更并再次测试它的方式重新安排您的类/逻辑.是否有重大改进?


atr*_*eon 6

肯特·贝克回答你的问题。Jeff Langr 在《清洁代码敏捷软件工艺手册》一书中讨论了 Kent Beck 指定的四个设计规则。

(按重要性排序)

  1. 运行所有测试
  2. 不包含重复内容
  3. 表达了程序员的意图
  4. 最大限度地减少类和方法的数量

Kent 建议采用务实的方法来保持类和方法的数量较少。他举了遵守教条规则的例子,例如所有类都应该有接口。通常是的,但有时在某些情况下可能没有必要。然而,这条规则是简单设计的四个规则中优先级最低的。

(注意,这是肯特·贝克的观点,而不是我的观点!)


Pab*_*mer 5

通常很多类意味着你可能已经非常普遍地解决了你的问题.这通常很好,因为这意味着您希望在最终需要时更容易更改行为.

在开发较小的项目时,有时候更具体(即不那么普遍)以更快地实现事情可能会更好,这可能会导致更少的课程,但在需要出现时可能更难以改变.

只要类很好地排序并且具有明确定义的目的,具有许多类就不应该是一个问题.

如果类紧密耦合或某些类的责任没有明确定义,那么问题怎么可能出现呢?有关coupling的更多信息,请点击这里.

下面的评论中提到了可能出现的另一个问题.如果您的许多类具有类似的代码,则会出现重复问题.如果需要对重复代码进行更改,则必须多次进行更改,这通常会导致系统的可维护性降低.这通常通过继承来解决.

  • 我同意那里.但是,你可能会遇到很多类只重复自己的情况,因为继承没有正确使用.有一些工具可以衡量代码重复.如果你有很多代码重复较少的类,我同意这是一个好兆头. (2认同)