昨天跳過《javascript高級程序設計》前面幾章書的內容,直接跳到最佳實踐那一章,然而那一張說的又和我在實習的時候的實踐,有很大的關係,所以我就以爲應該整理出來,分享一下,畢竟仍是挺好的一部分。javascript
1、編寫可維護的代碼css
可維護的代碼就有一些特徵:html
(1)可理解性java
(2)直觀性算法
(3)可適應性編程
(4)可拓展性數組
(5)可調試性dom
2、代碼約定函數
一、可讀性:代碼縮進大小爲4個空格工具
須要進行註釋的地方:
(1)函數和方法:如函數的目的和用於完成任務所可能使用的算法。
(2)大段代碼:解釋這一大段代碼是作什麼的
(3)複雜的算法:解釋算法是怎麼作的
(4)Hack:解釋特殊的hack片斷是怎麼作的。
二、變量和函數命名:(命名要規範)
(1)變量名爲名詞
(2)函數名爲動詞
(3)合乎邏輯,不該擔憂長度
(4)變量類型透明,好比經過初始化指定變量類型、經過匈牙利標記、經過指定類型的類型註釋。
三、要注意鬆散耦合
(1)解耦HTML/javascript: 儘可能避免在html頁面中直接插入<script>標籤
(2)解耦css/javascript:儘可能避免直接操做style,能夠經過動態更改樣式類而非特定樣式實現。這個仍是比較重要的,直接更改類比批量更改樣式好太多了
(3)解耦應用邏輯/事件處理程序:將應用邏輯和事件處理程序相分離。
應用和業務邏輯之間鬆散耦合的幾條原則:
(1)勿將event對象傳給其餘方法,只傳來自event對象中所需的數據;
(2)任何能夠在應用層面的動做,都應該能夠在不執行任何事件處理程序的狀況下進行;
(3)任何事件處理程序都應該處理事件,而後將處理轉交給應用邏輯。
3、編程實踐:
一、尊重對象全部權:也就是不能修改不屬於你的對象。就是不要爲實例或原型添加屬性和方法,不要重定義已存在的方法。
二、避免全局量: 就是要儘可能避免全局變量和函數。建立一個命名空間,而後將其所須要的命名都寫上去。
三、在類型檢測時儘可能避免與null進行比較,儘可能使用values instanceof Array。
能夠用如下技術,儘可能避免與null比較的代碼
(1)若是值爲一個引用類型,使用instanceof操做符檢查其構造函數
(2)若是值爲一個基本類型,使用typeof檢查其類型
(3)若是是對象包含某個特定的方法名,則使用typeof操做符確保指定名字的方法存在對象上。
四、儘可能使用常量
好比:這樣去引用。
五、將數據和使用它的邏輯進行分離所注意的值的類型:
(1)重複值,能夠抽取出來爲一個常量
(2)用戶界面字符串:能夠抽取出來方便國際化
(3)URLs:統一一個地方放全部的URL
(4)任何可能改變的值:抽取出來做爲一個常量。
4、性能問題
一、儘可能避免全局查找,能夠將元素聲明爲一個統一的變量
二、儘可能避免with語句
三、考慮算法複雜度,儘可能避免沒必要要的屬性查找,儘可能使用數字化的數組位置進行訪問,也可使用命名屬性。
四、優化循環:可使用從大到小的減值迭代方法;簡化終止條件;簡化循環體;使用後測試循環,也就是do-while循環
,
五、展開循環,使用duff裝置。
六、避免雙重解釋。儘可能避免某些代碼求值或者建立新函數。儘可能使用原生方法、switch方法和位運算符。
5、最小化語句數
一、儘可能多個變量聲明。直接一個var值,而後用,隔開就行了。
二、插入迭代值,好比
三、使用數組和對象字面量
6、優化DOM交互
一、最小化現場更新:就是更新的時候,將所有dom都寫完,而後再統一渲染
二、儘可能使用innerHTML
三、儘可能使用事件代理:在文檔級別附加事件處理程序或者將事件程序附加到更高層的地方負責多個目標的事件處理。
四、儘可能避免使用htmlCollection,在下面幾種狀況會產生htmlCollection,進行getElementsByTagName()調用,獲取元素的childNodes屬性,獲取元素的attributes屬性,訪問特殊屬性:document.form,document.images.
7、部署代碼
一、可使用構建工具
二、進行驗證,儘可能發掘一些潛在的問題:
(1)eval()的使用
(2)未聲明變量的使用
(3)遺漏的分號
(4)不恰當的換行
(5)錯誤的逗號使用
(6)語句周圍遺漏的括號
(7)switch分支語句中遺漏的break;
(8)重複聲明的變量
(9)with的使用
(10)錯誤使用的等號
(11)沒法到達的代碼
三、進行代碼壓縮:包括文件壓縮和HTTP壓縮。
8、js文件,css文件要分文件使用,這樣便於維護。
總的來講,這一章將的主要是怎麼將代碼寫好,寫的更加優秀,裏面說到的不少內容,我在實習的時候,都遇到過,平時沒怎麼注意,可是這確是不少人須要注意的地方。
講的很全面也很好。因此推薦你們儘可能達到這些標準,讓本身的代碼更加優秀。由於當你入門以後,你就會考慮怎麼樣將本身的代碼寫的更好了。