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 代碼的嚴謹性會比其它更為嚴謹的程式語言花費更多的時間,且易犧牲代碼執行性能。