天天看點

jshint和jslint的差別JSHint 與 JSLint 的差別與選擇

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

繼續閱讀