摘要:最近讀完編寫可維護(hù)的,讓我受益匪淺,它指明了編碼過(guò)程中,需要注意的方方面面,在團(tuán)隊(duì)協(xié)作中特別有用,可維護(hù)性是一個(gè)非常大的話題,這本書是一個(gè)不錯(cuò)的起點(diǎn)。擴(kuò)展閱讀編寫可維護(hù)的歡迎來(lái)到石佳劼的博客,如有疑問(wèn),請(qǐng)?jiān)谠脑u(píng)論區(qū)留言,我會(huì)盡量為您解答。
最近讀完《編寫可維護(hù)的JavaScript》,讓我受益匪淺,它指明了編碼過(guò)程中,需要注意的方方面面,在團(tuán)隊(duì)協(xié)作中特別有用,可維護(hù)性是一個(gè)非常大的話題,這本書是一個(gè)不錯(cuò)的起點(diǎn)。
本書雖短,卻五臟俱全,主要涵蓋:編程風(fēng)格(基本格式化、注釋、語(yǔ)句和表達(dá)式、變量),編程實(shí)踐(UI層松耦合、避免使用全局變量等)、自動(dòng)化,3個(gè)部分的內(nèi)容。
本文主要整理歸納了書中編程實(shí)踐章節(jié)的核心內(nèi)容,其他兩章編碼風(fēng)格和自動(dòng)化部分,還需結(jié)合當(dāng)前的流行趨勢(shì)重新整理,稍后再與大家分享。
第5章 UI層的松耦合Web開(kāi)發(fā)三大要素,HTML(結(jié)構(gòu)、內(nèi)容),CSS(布局、樣式),JavaScript(交互、行為)
將JavaScript從CSS中抽離
將CSS從JavaScript中抽離
將JavaScript從HTML中抽離
將HTML從JavaScript中抽離
第6章 避免使用全局變量導(dǎo)致問(wèn)題:命名沖突、代碼的脆弱性、難以預(yù)測(cè)、意外的全局變量
單全局變量:依賴盡量少的全局變量,即只創(chuàng)建一個(gè)全局變量
命名空間:將功能按命名空間分組,l例如:var oa30.doc.workflow = {};
模塊:將功能按模塊分組,常用異步模塊定義 Asynchronous Module Definition,簡(jiǎn)稱AMD模式
零全局變量:簡(jiǎn)單的功能,通過(guò)自執(zhí)行函數(shù),可避免創(chuàng)建全局變量(需使用嚴(yán)格模式)
第7章 事件處理規(guī)則1:隔離應(yīng)用邏輯
規(guī)則2:不要分發(fā)事件對(duì)象
第8章 避免『空比較』檢測(cè)原始值,常用typeof
檢測(cè)引用值:檢測(cè)函數(shù)用typeof、檢測(cè)數(shù)組用Object.prototype.toString.call(value)===‘[Object Array]"
檢測(cè)屬性,最好使用in運(yùn)算符,只檢測(cè)實(shí)例對(duì)象的屬性,則需配合使用hasOwnProperty()
第9章 將配置數(shù)據(jù)從代碼中分離出來(lái)配置數(shù)據(jù)有:URL、重復(fù)的值、需要展現(xiàn)給用戶的字符串、設(shè)置、可能發(fā)生變更的值
抽離配置數(shù)據(jù),保存到多帶帶的文件中,與邏輯代碼分開(kāi)
第10章 拋出自定義錯(cuò)誤為了兼容各個(gè)瀏覽器,請(qǐng)確保拋出的錯(cuò)誤是一個(gè)Error對(duì)象,例如:throw new Error(‘i am a error.");
使用throw還是try-catch,錯(cuò)誤應(yīng)該在應(yīng)用程序棧中最深的部分拋出,業(yè)務(wù)邏輯代碼應(yīng)該有錯(cuò)誤處理的能力
第11章 不是你的對(duì)象不要?jiǎng)?/b>不要修改:原生對(duì)象、DOM對(duì)象、BOM對(duì)象、類庫(kù)對(duì)象
原則:不覆蓋方法、不新增方法、不刪除方法
更好的途徑,使用基于對(duì)象的繼承、基于類型的繼承、門面模式
關(guān)于Polypill的注解
ECMAScript5引入了三種阻止對(duì)象修改的級(jí)別,防止擴(kuò)展、密封、凍結(jié)
第12章 瀏覽器嗅探User-Agent檢測(cè)只能用于舊的或者特定版本的瀏覽器,絕不應(yīng)當(dāng)用于最新版本的或者未來(lái)的瀏覽器。
盡可能地使用特性檢測(cè),退而求其次可考慮User-Agent檢測(cè),永遠(yuǎn)不要使用特性推斷和瀏覽器推斷。
擴(kuò)展閱讀《編寫可維護(hù)的JavaScript》
歡迎來(lái)到 石佳劼的博客,如有疑問(wèn),請(qǐng)?jiān)凇冈摹乖u(píng)論區(qū) 留言,我會(huì)盡量為您解答。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79636.html
摘要:所以我覺(jué)得函數(shù)式編程領(lǐng)域更像學(xué)者的領(lǐng)域。函數(shù)式編程的原則是完善的,經(jīng)過(guò)了深入的研究和審查,并且可以被驗(yàn)證。函數(shù)式編程是編寫可讀代碼的最有效工具之一可能還有其他。我知道很多函數(shù)式編程編程者會(huì)認(rèn)為形式主義本身有助于學(xué)習(xí)。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson?。 禮ou-Dont-Know-JS》作者 關(guān)于譯者:這是一個(gè)流淌著滬江血液...
摘要:前言月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過(guò)的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多9月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
摘要:如果值是基本類型,則用操作符檢查其類型??偨Y(jié)所有編程語(yǔ)言都需要可維護(hù)性良好的代碼,這個(gè)很重要,因?yàn)榇蟛糠珠_(kāi)發(fā)人員都花費(fèi)大量時(shí)間維護(hù)他人的代碼。 o(╯□╰)o 這并不是什么史詩(shī)巨作,沒(méi)有非常深入去挖掘這類問(wèn)題,只是從平常的JS代碼習(xí)慣,參考書籍總結(jié)而來(lái),希望對(duì)你有幫助的! 今天的web應(yīng)用大至成千上萬(wàn)行的javascript代碼,執(zhí)行各種復(fù)雜的過(guò)程,這種演化讓我們開(kāi)發(fā)者必...
摘要:避免與進(jìn)行比較避免推薦與進(jìn)行比較的代碼,可以用以下技術(shù)進(jìn)行替換如果值是一個(gè)應(yīng)用類型,使用操作符,檢查其構(gòu)造函數(shù)如果值是基本類型,使用檢查其類型如果是希望對(duì)象包含某個(gè)特定的方法名,則只用操作符確保指定名字的方法存在于對(duì)象上。 持續(xù)更新地址 https://wdd.js.org/js-best-pr... 1. 風(fēng)格 一千個(gè)讀者有一千個(gè)哈姆雷特,每個(gè)人都有自己的code style。...
閱讀 1613·2021-09-23 11:31
閱讀 929·2021-09-23 11:22
閱讀 1353·2021-09-22 15:41
閱讀 4085·2021-09-03 10:28
閱讀 2918·2019-08-30 15:55
閱讀 3549·2019-08-30 15:55
閱讀 1966·2019-08-30 15:44
閱讀 2728·2019-08-30 13:50