LOC可能是滥用最严重的指标之一,因此可能是更无用的代码质量度量之一,也是对编程工作的更无用度量。
是的,这对我来说是一个大胆的声明,不,我无法指出您要证明我观点的研究。但是,我可以用来之不易的经验来说明,当您开始担心编写了多少代码时,您可能会担心错误的问题。
首先,您需要问自己要测量或证明的内容是什么,以及该证明仅仅是出于兴趣,还是为了支持更广泛的质量改进,以及您需要在何处使用此信息从团队中获得支持/ management做一些事情。
我倾向于使用LOC的一件事是进行完整性检查。如果我发现自己编写了很多代码,那么我会对每个方法或每个类的LOC而不是整个LOC更加感兴趣。如果您对代码的分解程度感到有些强迫症,那么这些度量可能是您需要进一步重构的指标。非常大的类可能需要重构为几个较小的类,长的多行方法可能需要分解为几个方法和其他类,甚至可能指示某些重复可以删除。注意,我在那里多次使用“可能”一词。
现实情况是,LOC仅提供可能的指示符,而不能真正保证您的代码可能需要更改。要问的真正问题是代码是否按照要求和预期运行。如果是这样,那么下一个问题是您是否能够轻松维护代码,以及现在或将来是否有时间对工作代码进行更改以减少将来的维护开销。
通常,许多代码意味着您以后需要维护的代码更多,但是有时即使结构合理的代码也可以扩展到数百行代码,是的,您有时会发现自己一天要编写数百行代码。但是经验告诉我,如果我每天要维持数百行新代码的输出,通常会冒着很大一部分代码被不适当地从其他地方剪切和粘贴的风险,并且这本身可能表明存在问题。复制和维护,但这又不能保证,因此我倾向于根据手头任务的完成方式来依靠我的经验和直觉告诉我。
避免您的问题恕我直言所带来的困境的最佳方法是忘记LOC,并始终重构。首先编写您的代码测试,实施失败,重构以通过,然后查看在那里可能重构的内容,然后改进代码。您将离开该任务,知道您已经仔细检查了您的工作,并且您不必担心将来会再次猜测自己。实际上,如果您使用我所描述的测试优先的方法,那么对已完成代码的任何LOC /天度量值实际上都意味着您已写入了3-5倍的度量值,而这种努力被正在进行的重构成功地隐藏了努力。