有些人声称,代码的最大敌人就是代码量,我也倾向于这个观点。然而,每天你都会听到这样的话:
- 我一天写了xxx行代码。
- 我的项目有xxx行代码。
- Windows 有 xxx 百万行代码。
问题:什么时候使用“#代码行数”有用?
注:当出现这种说法时,语气通常是“越多越好”。
有些人声称,代码的最大敌人就是代码量,我也倾向于这个观点。然而,每天你都会听到这样的话:
问题:什么时候使用“#代码行数”有用?
注:当出现这种说法时,语气通常是“越多越好”。
我会说它是当你删除代码以使项目运行更好的时候。
说你删除了“X行”的代码是很令人印象深刻的。并且比你添加了多少行代码更有帮助。
我很惊讶没有人提到迪杰斯特拉的名言,所以在这里说一下:
我的观点是,如果我们希望计算代码行数,我们不应该把它们看作“产出的行数”,而应该看作“花费的行数”:目前的常识是如此愚蠢,以至于在账簿的错误一边计算了这个数字。
这句话来自一篇名为“论计算机科学教学的残酷性”的文章。
这是一个糟糕的衡量标准,但正如其他人所指出的那样,它可以给你一个(非常)大概的系统整体复杂度的想法。如果你正在比较A和B两个项目,并且A有10,000行代码,而B有20,000行,那么这并不能告诉你太多——项目B可能过于冗长,或者A可能超级压缩。
然而,如果一个项目有10,000行代码,而另一个项目有1,000,000行代码,一般来说,第二个项目更加复杂。
这个指标的问题在于,当它用于评估生产力或对某个项目的贡献水平时,它就会出现问题。如果程序员“X”写的代码行数是程序员“Y”的两倍,他可能会或可能不会做出更多贡献——也许“Y”正在解决更难的问题……
当向朋友炫耀时。
至少对于进展来说,不是这样的:
“以代码行数来衡量编程进展,就像以重量来衡量飞机制造进展一样。”--比尔·盖茨
有一个特殊的情况,我发现它是非常有价值的。当你在面试中,对方告诉你一部分工作是维护一个现有的C++/Perl/Java等老项目时。询问面试官遗留项目包含多少KLOC(约)将让你更好地了解是否想要这份工作。
在加载行式打印机时,这很有用,这样你就知道即将要打印的代码清单将消耗多少页。
;)这让我想起了这个:
(注:该段引用自法国数学家和哲学家布莱兹·帕斯卡的名言,强调写作的难度在于精简和压缩思想表达的内容。)这封信非常长,只因为我没有时间把它写得更短。
--布莱兹·帕斯卡。
大约25年前,我读到一句话的意思是:
“使用代码行数作为衡量标准的问题在于它衡量的是解决方案的复杂度,而不是问题的复杂度。”
我相信这句话来自David Parnas在ACM期刊上的一篇文章。