6

对于面向对象的语言(比如 C++、C#、Java 等),类数与代码行数的良好比率是多少?

包括经理在内的许多人都喜欢用传统的 LOC(代码行)度量来衡量软件的复杂性,而许多顽固的面向对象的开发人员会说 LOC 毫无价值,因为它的类数才是重要的。而且我个人认为,类可能是一个更合理的复杂性度量,但是如果没有 LOC 度量,这些类的实际复杂性(其中的恶作剧者和神灵的数量)很难估计。

因此,有人知道对于一些编码良好的软件来说,什么可能是一个健康的比率?

编辑:在这种特殊情况下,我正在寻找一个比率来确定清理代码可能需要多少重构的大致估计。

编辑:有人知道一些大型 OSS 项目(如 Firefox、Apache、Webkit 等)的比率吗?

4

3 回答 3

8

LOC 或 NLOC 并不是真正衡量代码质量或健康状况的好方法。我建议使用NDepend的静态代码分析(为您.net 窥视)来查看您的解决方案的架构如何。

我发现 LOC 仅在方法级别是很好的衡量标准。也就是说,我通常喜欢我的方法适合屏幕(不是小字体)。除了单元测试之外,其他指标,如循环复杂度和代码覆盖率(针对您的 TDDers)可以更好地了解您的代码库的健康程度。

于 2008-10-09T06:18:56.530 回答
2

对于这个问题,实际上并没有一个好的、确定的或令人满意的答案。但是,我会说,根据我的经验,每个类的代码行数会随着面向对象编程经验的增加而减少。

大多数没有学习过面向对象设计原则的人往往会拥有包含大量代码行的类。有很多面向对象经验的人每个类的代码行数往往会更少,但会拥有更多的类。当然,两者都会互相抱怨:-)。

于 2008-10-09T06:15:49.797 回答
2

如果您真的只是在寻找经验法则,那么我会说任何无法以可读分辨率打印在单张纸上的类可能太长,应该重构。您的目标标记可能在 100-200 行左右,但在我看来,页数因素更容易处理。

我也坚信,页数指标应该被视为衡量坏的因素而不是线性的。如果代码库中有一个十页的类,那对我来说,这比一个结构良好的小类至少差三百万倍。

于 2009-11-04T16:09:10.553 回答