JSHint 与 JSLint 的区别与选择
近来 JavaScript 开源项目中,越来越多的重要项目开始从 JSLint 转而使用 JSHint,新的开源项目大多已开始就是用了 JSHint 而 JSLint。
JSLint 介绍
JSLint 与2002年发布,是一个历史悠久的 JavaScript 静态代码分析工具,因此时常会在一些 JavaScript 经典书籍中提及,如《JavaScript 权威指南(第6版)》。
我们以往经常会在一些开源项目中发现这样的代码注释:
jslint complaints about the below line, but this is fine
这是因为 JSLint 的作者 Douglas Crockford 制订了一套 JavaScript 编码规则,JSLint 通过检查和分析 JavaScript 代码,将任何违反规则的代码警告给开发者,且无法通过配置关闭一些开发者认为不是问题的警告,而导致检查和开发无法继续下去。
例如在 JavaScript 语法规范中;分号作为每条代码语句的结尾是可选的(即可有可无),现今不少新的开源项目已经不再使用分号,而直接采用换行作为一个行代码的结尾。而这种符合 JavaScript 语法规范的代码是不能被 JSLint 检查通过的。
JSHint 介绍
JSHint 发布不久并在近期才开始被逐步大量项目采用的与 JSLint 具有相同用途的 JavaScript 静态代码分析工具,JSHint 是在 JSLint 代码基础上二次开发而来的。
JSHint 设计得非常可配置,提供了丰富的指令和选项,可根据开发者以及研发团队的自身需要调整JSHint符合自己的编码规则、风格和品位。
JSLint 还是 JSHint ?
联系
- 一样的用途
- 均拥有大量的用户
- 相同的 JavaScript 代码检查和分析内核
- 均已成功用于多个知名的 JavaScript 项目
区别
- JSLint 对代码的合规要求极为严格
- JSHint 对代码的合规要求可以很宽松
- JSLint 可配置的选项很少
- JSHint 可配置的选项很多
选择 JSHint
如果在工程中首次引入静态代码分析工具,那么本文首推使用 JSHint,该程序的启动成本以及对开发者水平的要求均较低,特别在团队中,不同的技术水平的团队成员均能够较好的适应。
极客类程序员、采用新技术新风格的开发者、具备自有编码规范的研发团队只能够采用 JSHint,因为它的高度可配置性,可以符合不同的编码风格和规范。
选择 JSLint
如果开发者自己或团队中几乎所有的成员都具有较高研发水平,建议采用 JSLint,能够写出更加严谨的高品质代码,但会伴随着时间效率下降的代价,若为参与者众多的大型项目,这样的代价也是值得的。
JavaScript 编码风格的简单权衡
JavaScript 在诞生及设计之初就一个宽松编程语言,这是一把双刃剑,既提高了编程的效率,也降低了严谨性。随着 JavaScript 不断发展,现已经成为世界上第一大程序语言,采用 JavaScript 开发的软件也越发庞大和复杂,其优势和问题均越发的不可避免的被放大了。因此开发者需要权衡在效率与严谨性上的投入,以高效的开发出高质量的 JavaScript 程序。
本文认为 JavaScript 的编程中在保证软件品质的前提下,首要确保编程效率,其次才是严谨性。由于 JavaScript 特性所致,过度追求 JavaScript 代码的严谨性会比其它更为严谨的程序语言花费更多的时间,且易牺牲代码执行性能。