课程什么时候太长了?

时间:2010-02-08 15:58:11

标签: oop code-design

我认为

When is a function too long?是这个问题的一个子集。

确定某个课程太长的一些好指标是什么?

我正在为一个与外部承包商合作的项目重新制定一套代码验收指南,并意识到我过去没有涉及这个问题,但是应该在将来讨论这个问题。

6 个答案:

答案 0 :(得分:63)

当它有多个责任时。

让我引用罗伯特C.马丁的Clean Code来这里:

  

课程的第一条规则是它们应该很小。第二   类的规则是它们应该小于那个。 ......随着   函数我们通过计算物理线来测量大小。我们上课   使用不同的措施。我们承担责任。 [第10章,第136页]

答案 1 :(得分:16)

类扇出复杂度:给定类依赖的其他类的数量。此外,这个方块已经显示出至少表示功能程序(基于文件)所需的维护量。

圈复杂度:根据指定的限制检查圈复杂度。复杂性的衡量标准是if,while,do,for,?:,catch,switch,case语句和运算符&&和|| (加一)在构造函数,方法,静态初始化程序或实例初始化程序的主体中。它衡量通过源的最小可能路径数量,从而衡量所需测试的数量。通常1-4被认为是好的,5-7好,8-10考虑重新分解,现在11 +重新因子!

答案 2 :(得分:9)

不超过17行。不多也不少。所以,如果是17行以下,回车就可以了。如果它超过17,你将需要从函数内部开始调用其他函数。

例如:

public function myFunction() {
...
line 17: myFunctionPart2();
}

public function myFunctionPart2() {
...
line 17: myFunctionPart3();
}

等等。

它非常标准的编程实践。

答案 3 :(得分:3)

一个班级应该只有一个责任。这是一个比其长度更好的衡量标准。因此,在设计代码时,设计的每个单元(类型或类)应该只负责一件事(无论你的情况是“一件事”)。 如果你保持尽可能简单,你就不会陷入困境。

答案 4 :(得分:2)

忽略使用中的设计模式,我会考虑课程所承担的责任范围。如果范围太大,则应将其分解为具体职责,抽象出来,或使其更具通用性。

我实际上并不会将行数作为有意义的指标。

答案 5 :(得分:1)

当你认为现在你变得更难以管理并让你陷入困境时。