《編寫可維護(hù)的JavaScript》之編程實(shí)踐

最近讀完《編寫可維護(hù)的JavaScript》,讓我受益匪淺轧飞,它指明了編碼過程中,需要注意的方方面面撒踪,在團(tuán)隊(duì)協(xié)作中特別有用过咬,可維護(hù)性是一個(gè)非常大的話題,這本書是一個(gè)不錯(cuò)的起點(diǎn)制妄。

本書雖短援奢,卻五臟俱全,主要涵蓋:編程風(fēng)格(基本格式化忍捡、注釋、語句和表達(dá)式切黔、變量)砸脊,編程實(shí)踐(UI層松耦合、避免使用全局變量等)纬霞、自動(dòng)化凌埂,3個(gè)部分的內(nèi)容。

本文主要整理歸納了書中編程實(shí)踐章節(jié)的核心內(nèi)容诗芜,其他兩章編碼風(fēng)格自動(dòng)化部分瞳抓,還需結(jié)合當(dāng)前的流行趨勢重新整理埃疫,稍后再與大家分享。


第5章 UI層的松耦合

  • Web開發(fā)三大要素孩哑,HTML(結(jié)構(gòu)栓霜、內(nèi)容),CSS(布局横蜒、樣式)胳蛮,JavaScript(交互、行為)
  • 將JavaScript從CSS中抽離
  • 將CSS從JavaScript中抽離
  • 將JavaScript從HTML中抽離
  • 將HTML從JavaScript中抽離

第6章 避免使用全局變量

  • 導(dǎo)致問題:命名沖突丛晌、代碼的脆弱性仅炊、難以預(yù)測、意外的全局變量
  • 單全局變量:依賴盡量少的全局變量澎蛛,即只創(chuàng)建一個(gè)全局變量
  • 命名空間:將功能按命名空間分組抚垄,l例如:var oa30.doc.workflow = {};
  • 模塊:將功能按模塊分組,常用異步模塊定義 Asynchronous Module Definition谋逻,簡稱AMD模式
  • 零全局變量:簡單的功能呆馁,通過自執(zhí)行函數(shù),可避免創(chuàng)建全局變量(需使用嚴(yán)格模式)

第7章 事件處理

  • 規(guī)則1:隔離應(yīng)用邏輯
  • 規(guī)則2:不要分發(fā)事件對象

第8章 避免『空比較』

  • 檢測原始值斤贰,常用typeof
  • 檢測引用值:檢測函數(shù)用typeof智哀、檢測數(shù)組用Object.prototype.toString.call(value)===‘[Object Array]'
  • 檢測屬性,最好使用in運(yùn)算符荧恍,只檢測實(shí)例對象的屬性瓷叫,則需配合使用hasOwnProperty()

第9章 將配置數(shù)據(jù)從代碼中分離出來

  • 配置數(shù)據(jù)有:URL、重復(fù)的值送巡、需要展現(xiàn)給用戶的字符串摹菠、設(shè)置、可能發(fā)生變更的值
  • 抽離配置數(shù)據(jù)骗爆,保存到單獨(dú)的文件中次氨,與邏輯代碼分開

第10章 拋出自定義錯(cuò)誤

  • 為了兼容各個(gè)瀏覽器,請確保拋出的錯(cuò)誤是一個(gè)Error對象摘投,例如:throw new Error(‘i am a error.');
  • 使用throw還是try-catch煮寡,錯(cuò)誤應(yīng)該在應(yīng)用程序棧中最深的部分拋出,業(yè)務(wù)邏輯代碼應(yīng)該有錯(cuò)誤處理的能力

第11章 不是你的對象不要?jiǎng)?/h3>
  • 不要修改:原生對象犀呼、DOM對象幸撕、BOM對象、類庫對象
  • 原則:不覆蓋方法外臂、不新增方法坐儿、不刪除方法
  • 更好的途徑,使用基于對象的繼承、基于類型的繼承貌矿、門面模式
  • 關(guān)于Polypill的注解
  • ECMAScript5引入了三種阻止對象修改的級別炭菌,防止擴(kuò)展、密封逛漫、凍結(jié)

第12章 瀏覽器嗅探

  • User-Agent檢測只能用于舊的或者特定版本的瀏覽器黑低,絕不應(yīng)當(dāng)用于最新版本的或者未來的瀏覽器。
  • 盡可能地使用特性檢測尽楔,退而求其次可考慮User-Agent檢測投储,永遠(yuǎn)不要使用特性推斷和瀏覽器推斷。

擴(kuò)展閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阔馋,一起剝皮案震驚了整個(gè)濱河市玛荞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呕寝,老刑警劉巖勋眯,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異下梢,居然都是意外死亡客蹋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門孽江,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讶坯,“玉大人,你說我怎么就攤上這事岗屏×纠牛” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵这刷,是天一觀的道長婉烟。 經(jīng)常有香客問我,道長暇屋,這世上最難降的妖魔是什么似袁? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮咐刨,結(jié)果婚禮上昙衅,老公的妹妹穿的比我還像新娘。我一直安慰自己定鸟,他們只是感情好绒尊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仔粥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躯泰,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天谭羔,我揣著相機(jī)與錄音,去河邊找鬼麦向。 笑死瘟裸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诵竭。 我是一名探鬼主播话告,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼卵慰!你這毒婦竟也來了沙郭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤裳朋,失蹤者是張志新(化名)和其女友劉穎病线,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鲤嫡,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡送挑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了暖眼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惕耕。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖诫肠,靈堂內(nèi)的尸體忽然破棺而出司澎,到底是詐尸還是另有隱情,我是刑警寧澤区赵,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布惭缰,位于F島的核電站,受9級特大地震影響笼才,放射性物質(zhì)發(fā)生泄漏漱受。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一骡送、第九天 我趴在偏房一處隱蔽的房頂上張望昂羡。 院中可真熱鬧,春花似錦摔踱、人聲如沸虐先。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛹批。三九已至撰洗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腐芍,已是汗流浹背差导。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猪勇,地道東北人设褐。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像泣刹,于是被迫代替她去往敵國和親助析。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容