我参加过不止一场讲座,我们被告知类不应超过 200 行代码。
然而,我有很多项目的类有多达 500 行甚至更多的代码。通常,这些类看起来就像它们一样有意义,因为这些类中的所有功能似乎都属于一起。
我的问题是,尝试针对较小的课程是否真的有意义(在大多数情况下,总是有例外),或者这只是软件开发中的一厢情愿,在大型项目中并不总是可行(甚至是合理的)?
我参加过不止一场讲座,我们被告知类不应超过 200 行代码。
然而,我有很多项目的类有多达 500 行甚至更多的代码。通常,这些类看起来就像它们一样有意义,因为这些类中的所有功能似乎都属于一起。
我的问题是,尝试针对较小的课程是否真的有意义(在大多数情况下,总是有例外),或者这只是软件开发中的一厢情愿,在大型项目中并不总是可行(甚至是合理的)?
这实际上取决于实现和领域。如果可以,您应该始终尝试重构代码并将其组织成最简单的布局。精简接口,使用Chesire Cat或Builder Pattern等模式实现。有时您需要在一个类中包含大量代码,但这是一个很好的“经验法则”,即如果看起来代码太多,至少花一些时间考虑是否可以对其进行重构。
只需将每个类视为现实生活中的对象表示。因此,如果对象很复杂,则该类将有更多代码。不太复杂(小对象)将有更少的代码。
您可以尝试将对象拆分为单独的组件或将常见的东西取出到父类。但是,这总是有限制的。
应该减少包含大量代码的单个方法,以提高可读性和理解力,但我倾向于说,只要类本身包含的代码合适,那么被包含就可以了。
用 分析firefox和chromium的源码后cloc
,得到如下结果:
---------------------------------------------------------------------------
Project Language files blank comment code loc/file
---------------------------------------------------------------------------
firefox C++ 5987 417603 318973 2156414 360
chromium C++ 3381 140033 128591 737553 218
我使用了 firefox 20.0 和 chromium 4.0.249.0 的源代码。在每个项目中都有很多编程语言,我忽略了除了 C++ 部分之外的所有语言。
我看到两个项目的每个文件的平均代码行数都超过 200 行。这意味着很多文件可能有 200 多个 loc,因为肯定也有很多小文件(头文件和源文件甚至单独计算)。
我绝对知道我的研究并不是我的主张的真正依据,但是在分别对不同的源文件进行了一些检查之后,我发现有相当多的文件有很多超过 200 loc。
为了回答我自己的问题,我想说虽然人们应该总是尝试有小类,但经常存在将类拆分成更小的类以减少每个类的 loc 使项目比相反更复杂的情况。