《編寫可維護的JavaScript》之編程實踐

最近讀完《編寫可維護的JavaScript》,讓我受益匪淺,它指明瞭編碼過程中,需要注意的方方面面,在團隊協作中特別有用,可維護性是一個非常大的話題,這本書是一個不錯的起點。

本書雖短,卻五臟俱全,主要涵蓋:編程風格(基本格式化、註釋、語句和表達式、變量),編程實踐(UI層鬆耦合、避免使用全局變量等)、自動化,3個部分的內容。

本文主要整理歸納了書中編程實踐章節的核心內容,其他兩章編碼風格自動化部分,還需結合當前的流行趨勢重新整理,稍後再與大家分享。


第5章 UI層的鬆耦合

  • Web開發三大要素,HTML(結構、內容),CSS(佈局、樣式),JavaScript(交互、行爲)
  • 將JavaScript從CSS中抽離
  • 將CSS從JavaScript中抽離
  • 將JavaScript從HTML中抽離
  • 將HTML從JavaScript中抽離

第6章 避免使用全局變量

  • 導致問題:命名衝突、代碼的脆弱性、難以預測、意外的全局變量
  • 單全局變量:依賴儘量少的全局變量,即只創建一個全局變量
  • 命名空間:將功能按命名空間分組,l例如:var oa30.doc.workflow = {};
  • 模塊:將功能按模塊分組,常用異步模塊定義 Asynchronous Module Definition,簡稱AMD模式
  • 零全局變量:簡單的功能,通過自執行函數,可避免創建全局變量(需使用嚴格模式)

第7章 事件處理

  • 規則1:隔離應用邏輯
  • 規則2:不要分發事件對象

第8章 避免『空比較』

  • 檢測原始值,常用typeof
  • 檢測引用值:檢測函數用typeof、檢測數組用Object.prototype.toString.call(value)===‘[Object Array]’
  • 檢測屬性,最好使用in運算符,只檢測實例對象的屬性,則需配合使用hasOwnProperty()

第9章 將配置數據從代碼中分離出來

  • 配置數據有:URL、重複的值、需要展現給用戶的字符串、設置、可能發生變更的值
  • 抽離配置數據,保存到單獨的文件中,與邏輯代碼分開

第10章 拋出自定義錯誤

  • 爲了兼容各個瀏覽器,請確保拋出的錯誤是一個Error對象,例如:throw new Error(‘i am a error.’);
  • 使用throw還是try-catch,錯誤應該在應用程序棧中最深的部分拋出,業務邏輯代碼應該有錯誤處理的能力

第11章 不是你的對象不要動

  • 不要修改:原生對象、DOM對象、BOM對象、類庫對象
  • 原則:不覆蓋方法、不新增方法、不刪除方法
  • 更好的途徑,使用基於對象的繼承、基於類型的繼承、門面模式
  • 關於Polypill的註解
  • ECMAScript5引入了三種阻止對象修改的級別,防止擴展、密封、凍結

第12章 瀏覽器嗅探

  • User-Agent檢測只能用於舊的或者特定版本的瀏覽器,絕不應當用於最新版本的或者未來的瀏覽器。
  • 儘可能地使用特性檢測,退而求其次可考慮User-Agent檢測,永遠不要使用特性推斷和瀏覽器推斷。

擴展閱讀

歡迎來到 石佳劼的博客,如有疑問,請在「原文」評論區 留言,我會盡量爲您解答。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章