本节书摘来自异步社区《JavaScript专家编程》一书中的第9章,第9.5节,作者:【美】Mark Daggett(达格特)著,更多章节内容可以访问云栖社区“异步社区”公众号查看
9.5 小结
本章介绍了JavaScript代码质量的必要性及其原因。一个程序的质量往往会影响程序员维护、改进甚至是否有能力完全了解源代码。质量差的代码通常被称为技术债,剥夺了项目的时间和资源,而这些时间和资源用在其他地方能更好地发挥作用。然而,编程往往是一门跨越了艺术和科学之间的学科,这使得对质量的定义变的更为复杂。而且,质量又是从主观和客观上的双重度量。
有这样一种观点认为,一个人所在时代的文化,以及他们的个人经历都会对质量产生影响。这种观点将质量描述为具有“内在卓越”的东西,只有有这样经验的人才能识别出来。这可以解释为什么在诸如艺术的领域中对于质量变化的潮起潮落。主观质量往往存在于手工编程(例如,软件工匠)的描述中。
与此相反,客观质量分析则认为,质量可以提炼成一系列可重复的步骤。这些步骤可以用质量指标来表示,给程序员如何能提高代码代码质量进行指导。这些指标主要围绕代码进行静态分析,在运行代码之前研究。本章探讨了三种静态分析的用法:
- 检查语法的正确性;
- 找出代码中程序员偏离最佳实践的地方;
- 找出别人觉得很难理解的代码。
本章大部分内容在介绍别人通过努力创建了对复杂代码进行度量的算法。在编程中,复杂度是对开发人员必须承受完全理解代码的一个单元所花费的脑力劳动的度量。然而,许多度量方式虽然可以提供一些有用信息,但也不是没有自己的缺点。一些度量方式,像Halstead指标,利用了人类认知的生理学方面的有问题的假设。其他方法,像NPATH,基于某些流程结构天生比其他流程更难理解来定义额外复杂度。为了适应单一方法一些不足之处,最好结合使用复杂度度量方式,并且只在它们符合你对复杂度的观点的时候应用。