可維護的代碼的特點
可理解性——其他人易于理解
直觀性——代碼容易看明白
可適應(yīng)性——以數(shù)據(jù)的變化代替完全重寫
可擴展性——代碼架構(gòu)上考慮了未來對核心功能的可擴展性
可調(diào)式性——有地方出錯時,容易定位
代碼約定
可讀性
? 函數(shù)和方法應(yīng)該包含注釋
? 完成單個任務(wù)的大段代碼前增加注釋
? 復雜的算法增加注釋
? Hack——hack注釋
變量和函數(shù)命名
? 變量名應(yīng)為名詞(car或person)
? 函數(shù)名以動詞開始(getName())
? 返回布爾值的函數(shù)一般以is開頭(isEnable())
? 變量和函數(shù)都應(yīng)使用合乎邏輯的名字,不要擔心長度。(后期處理和壓縮)
變量類型透明
? 初始化賦值來說明變量類型(var count = -1)
? 使用匈牙利標記法來指定變量類型(var bFound;? ? //布爾型)
? 使用注釋說明
松散耦合
解耦HTML/JavaScript
? html是數(shù)據(jù),javascript是行為,二者盡量分離
? 應(yīng)該避免在JS中創(chuàng)建大量的HTML
? html呈現(xiàn)盡量與JS保持分離
解耦CSS/JavaScript
? css負責頁面的顯示
解耦應(yīng)用邏輯/事件處理程序
? 應(yīng)用邏輯和事件處理程序分離,例如兩個函數(shù)完成
編程實踐
尊重對象所有權(quán)
? 如果你不負責創(chuàng)建或維護某個對象、它的對象或者它的方法,那么你就不能對它們進行修改
避免全局變量
? 關(guān)系到創(chuàng)建一個腳本執(zhí)行的一致的和可維護的環(huán)境
? 最多創(chuàng)建一個全局變量,讓其他對象和函數(shù)存在其中
? 避免與null進行比較
? 直接將值與 null比較是使用過度的,并且常常由于不充分的類型檢查導致錯誤。
使用常量
? 將應(yīng)用邏輯與數(shù)據(jù)修改隔離開來(例如:var Constants = { baidu: www.baidu.com})
? 重復值——任何在多處用到的值都應(yīng)抽取為一個常量
? 用戶界面字符串——任何用于顯示給用戶的字符串,都應(yīng)被抽取出來以方便國際化。
? URLs——在 Web 應(yīng)用中,資源位置很容易變更,所以推薦用一個公共地方存放所有的 URL。
? 任意可能會更改的值——每當你在用到字面量值的時候,你都要問一下自己這個值在未來是不是會變化。如果答案是“是”,那么這個值就應(yīng)該被 ? ? 提取出來作為一個常量。
? 對于企業(yè)級的 JavaScript 開發(fā)而言,使用常量是非常重要的技巧,因為它能讓代碼更容易維護,并且在數(shù)據(jù)更改的同時保護代碼。