編寫高質(zhì)量代碼

出版時間:2012-11  出版社:機械工業(yè)出版社  作者:成林  頁數(shù):393  
Tag標簽:無  

前言

為什么要寫這本書JavaScript是目前比較流行的Web開發(fā)語言。隨著移動互聯(lián)網(wǎng)、云計算、Web3.0和客戶端開發(fā)概念的升溫,JavaScript語言不斷成熟和普及,并被廣泛應用于各種B/S架構(gòu)的項目和不同類型的網(wǎng)站中。對于JavaScript初學者、網(wǎng)頁設計愛好者以及Web應用開發(fā)者來說,熟練掌握JavaScript語言是必需的。JavaScript語言的最大優(yōu)勢在于靈活性好,適應能力強。借助各種擴展技術(shù)、開源庫或框架,JavaScript能夠完成Web開發(fā)中各種復雜的任務,提升客戶端用戶體驗。作為資深的Web開發(fā)人員,筆者已經(jīng)習慣了與高性能的編程語言和硬件打交道,因此一開始并沒有對JavaScript編程有太高的期望。后來才發(fā)現(xiàn),JavaScript實際上是一種優(yōu)秀且高效的編程語言,而且隨著瀏覽器對其更好的支持、JavaScript語言本身的性能提升,以及新的工具庫加入,JavaScript不斷變得更好。JavaScript結(jié)合HTML 5等為Web開發(fā)人員提供了真正可以發(fā)揮想象力的空間。Node.js等新技術(shù)則為使用JavaScript對服務器進行編程描繪了非常美好的未來。但是,在閱讀網(wǎng)上大量散存的JavaScript代碼時,筆者能明顯感覺到很多用戶正在誤入“歧途”:編寫的代碼邏輯不清,結(jié)構(gòu)混亂,缺乏編程人員應有的基本素養(yǎng)。這種現(xiàn)狀一般都是用戶輕視JavaScript語言所致。還有很多用戶屬于“半路出家”,誤認為JavaScript就是一種“玩具語言”,沒有以認真的態(tài)度對待和學習這門語言,書寫代碼也很隨意。因此,筆者萌生了寫一本以提高JavaScript代碼編寫質(zhì)量為目的的書籍,在機械工業(yè)出版社華章公司楊福川編輯的鼓勵和指導下,經(jīng)過近半年的策劃和準備,終于鼓起勇氣動筆了。本書特色 深。本書不是一本語法書,它不會教讀者怎么編寫JavaScript代碼,但它會告訴讀者,為什么Array會比String類型效率高,閉包的自增是如何實現(xiàn)的,為什么要避免DOM迭代……不僅僅告訴讀者How(怎么做),而且還告訴讀者Why(為什么要這樣做)。廣。涉及面廣。從編碼規(guī)則到編程思想,從基本語法到系統(tǒng)框架,從函數(shù)式編程到面向?qū)ο缶幊蹋加猩婕?,而且所有的建議都不是“紙上談兵”,都與真實的場景相結(jié)合。點。從一個知識點展開講解,比如繼承,這里不提供繼承的解決方案,而是告訴讀者如何根據(jù)需要使用繼承,如何設置原型,什么時候該用類繼承,什么時候該用原型繼承等。精。簡明扼要。一個建議就是對一個問題的解釋和說明,以及相關的解決方案,不拖泥帶水,只針對一個問題進行講解。潔。雖然筆者盡力把每個知識點寫得生動,但代碼就是代碼,很多時候容不得深加工,最直接也就是最簡潔的。這是一本建議書。有這樣一本書籍在手邊,對如何編寫出優(yōu)雅而高效的代碼提供指導,將是一件多么愜意的事情啊!讀者對象本書適合以下讀者閱讀:打算學習JavaScript的開發(fā)人員。有意提升自己網(wǎng)站水平和Web應用程序開發(fā)能力的Web開發(fā)人員。希望全面深入理解JavaScript語言的初學者。此外,本書也適合熟悉下列相關技術(shù)的讀者閱讀:PHP/ASP/JSP HTML/ XMLCSS 對于沒有計算機基礎知識的初學者,以及只想為網(wǎng)站添加簡單特效和交互功能的讀者,閱讀本書前建議先閱讀JavaScript基礎教程類圖書。如何閱讀本書本書將改善JavaScript編程質(zhì)量的188個建議以9章內(nèi)容呈現(xiàn):第1章 JavaScript語言基礎JavaScript中存在大量的問題,這些問題會妨礙讀者編寫優(yōu)秀的程序。應該避免JavaScript中那些糟糕的用法,因此本章主要就JavaScript語言的一些基本用法中容易犯錯誤的地方進行說明,希望能夠引起讀者的重視。第2章 字符串、正則表達式和數(shù)組JavaScript程序與字符串操作緊密相連,在進行字符串處理時無時無刻不需要正則表達式的幫忙。如何提高字符串操 作和正則表達式運行效率是很多開發(fā)者最易忽視的問題。同時,數(shù)組是所有數(shù)據(jù)序列中運算速度最快的一種類型,但很多初學者忽略了這個有用的工具。本章將就這3個技術(shù)話題展開討論,通過閱讀這些內(nèi)容相信讀者能夠提高程序的執(zhí)行效率。第3章 函數(shù)式編程函數(shù)式編程已經(jīng)在實際應用中發(fā)揮了巨大作用,越來越多的語言不斷地加入對諸如閉包、匿名函數(shù)等的支持。從某種程度上來講,函數(shù)式編程正在逐步同化命令式編程。當然,用好函數(shù)并非易事,需要“吃透”函數(shù)式編程的本質(zhì),本章幫助讀者解決在函數(shù)式編程中遇到的各種問題。第4章 面向?qū)ο缶幊蘆avaScript采用的是以對象為基礎,以函數(shù)為模型,以原型為繼承機制的開發(fā)模式。因此,對于習慣于面向?qū)ο箝_發(fā)的用戶來說,需要適應JavaScript語言的靈活性和特殊性。本章將就JavaScript類、對象、繼承等抽象的問題進行探索,幫助讀者走出“誤區(qū)”。第5章 DOM編程DOM 操作代價較高,在富網(wǎng)頁應用中通常是一個性能瓶頸。因此,在Web開發(fā)中,需要特別注意性能問題,盡可能地降低性能損耗。本章將為讀者提供一些好的建議,幫助讀者優(yōu)化自己的代碼,讓程序運行得更快。第6章 客戶端編程在JavaScript開發(fā)中,很多交互效果都需要CSS的配合才能夠?qū)崿F(xiàn),因此CSS的作用不容忽視。本章主要介紹JavaScript+CSS腳本化編程,以及JavaScript事件控制技巧。第7章 數(shù)據(jù)交互和存儲數(shù)據(jù)交互和存儲是Web開發(fā)中最重要的,也是最容易被忽視的問題,它也是高性能JavaScript 的基石,是提升網(wǎng)站可用性的最大要素。本章主要介紹如何使用JavaScript提升數(shù)據(jù)交互的反應速度,以便更好地讓數(shù)據(jù)在前、后臺傳遞。第8章 JavaScript引擎與兼容性JavaScript兼容性是Web開發(fā)的一個重要問題。為了實現(xiàn)瀏覽器解析的一致性,需要找出不同引擎的分歧點在哪里。本章主要介紹各主流引擎在解析JavaScript代碼時的分歧,使讀者能夠編寫出兼容性很高的代碼。第9章 JavaScript編程規(guī)范和應用每種語言都存在缺陷。事實證明代碼風格在編程中是非常重要的,好的風格促使代碼能被更好地閱讀,更為關鍵的是,它能夠提高代碼的執(zhí)行效率。本章主要介紹如何提升JavaScript代碼編寫水平,主要包括風格、習慣、效率、協(xié)同性等問題,希望能夠給讀者帶來幫助。本書的期望 您是否曾經(jīng)為了提供一個簡單的應用解決方案而徹夜地查看源代碼?您是否曾經(jīng)為了理解某個框架而冥思苦想、閱覽群書? 您是否曾經(jīng)為了提升0.1s的DOM性能而對多種實現(xiàn)方案進行嚴格測試和對比?您是否曾經(jīng)為了避免兼容問題而遍尋高手共同“診治”?…… 在學習和使用JavaScript的過程中,您是否在原本可以很快掌握或解決的問題上耗費了大量的時間和精力?本書的很多內(nèi)容都是筆者曾經(jīng)付出代價換來的,希望它們能夠給您帶來一些幫助!代碼是一切的基石,一切都是以編碼實現(xiàn)為前提的,通過閱讀本書,期望為讀者帶來如下幫助:能寫出簡單、清晰、高效的代碼。能架構(gòu)一個穩(wěn)定、健壯、快捷的應用框架。能回答一個困擾很多人的技術(shù)問題。能修復一個應用開發(fā)中遇到的大的Bug。能非常熟悉某個開源產(chǎn)品。能提升客戶端應用性能?!?但是,“工欲善其事,必先利其器”,在“善其事”之前,先檢查“器”是否已經(jīng)磨得足夠鋒利了,是否能夠在前進的路上披荊斬棘。無論將來的職業(yè)發(fā)展方向是架構(gòu)師、設計師、分析師、管理者,還是其他職位,只要還與軟件打交道,就有必要打好技術(shù)基礎。本書所涉及的全部是核心的JavaScript編程技術(shù),如果能全部理解并付諸實踐,一定可以夯實JavaScript編程基礎。

內(nèi)容概要

本書是Web前端工程師進階修煉的必讀之作,將為你通往“JavaScript技術(shù)殿堂”指點迷津!內(nèi)容全部由編寫高質(zhì)量的JavaScript代碼的最佳實踐組成,從基本語法、應用架構(gòu)、工具框架、編碼風格、編程思想等5大方面對Web前端工程師遇到的疑難問題給出了經(jīng)驗性的解決方案,為Web前端工程師如何編寫更高質(zhì)量的JavaScript代碼提供了188條極為寶貴的建議。對于每一個問題,不僅以建議的方式給出了被實踐證明為十分優(yōu)秀的解決方案,而且還給出了經(jīng)常被誤用或被錯誤理解的不好的解決方案,從正反兩個方面進行了分析和對比,猶如醍醐灌頂,讓人豁然開朗。
本書針對每個問題所設計的應用場景都非常典型,給出的建議也都與實踐緊密結(jié)合。書中的每一條建議都可能在你的下一行代碼、下一個應用或下一個項目中被用到,建議你將此書放置在手邊,隨時查閱,一定能使你的學習和開發(fā)工作事半功倍。

作者簡介

成林,資深Web前端工程師,從事Web前端工作多年,精通CSS、HTML、JavaScript、jQuery和Ajax等Web前端技術(shù),在實踐中積累了大量的經(jīng)驗。推崇Web技術(shù)標準,曾經(jīng)在多所高等院校和一些線下技術(shù)沙龍主講Web標準和規(guī)范相關的課程,曾經(jīng)還參與過W3C組織的標準化文檔的中文編譯工作。近幾年來,集中精力研究和實踐CSS
3和 HTML 5前沿技術(shù),在國內(nèi)是該領域的先驅(qū)者之一。

書籍目錄

前言
第1章 JavaScript語言基礎
建議1:警惕Unicode亂碼
建議2:正確辨析JavaScript句法中的詞、句和段
建議3:減少全局變量污染
建議4:注意JavaScript數(shù)據(jù)類型的特殊性 
建議5:防止JavaScript自動插入分號
建議6:正確處理JavaScript特殊值
建議7:小心保留字的誤用
建議8:謹慎使用運算符
建議9:不要信任hasOwnProperty
建議10:謹記對象非空特性
建議11:慎重使用偽數(shù)組
建議12:避免使用with
建議13:養(yǎng)成優(yōu)化表達式的思維方式
建議14:不要濫用eval
建議15:避免使用continue
建議16:防止switch貫穿
建議17:塊標志并非多余
建議18:比較function語句和function表達式
建議19:不要使用類型構(gòu)造器
建議20:不要使用new
建議21:推薦提高循環(huán)性能的策略
建議22:少用函數(shù)迭代
建議23:推薦提高條件性能的策略
建議24:優(yōu)化if邏輯
建議25:恰當選用if和switch 
建議26:小心if嵌套的思維陷阱
建議27:小心if隱藏的Bug
建議28:使用查表法提高條件檢測的性能
建議29:準確使用循環(huán)體
建議30:使用遞歸模式
建議31:使用迭代
建議32:使用制表
建議33:優(yōu)化循環(huán)結(jié)構(gòu)
第2章 字符串、正則表達式和數(shù)組
建議34:字符串是非值操作
建議35:獲取字節(jié)長度
建議36:警惕字符串連接操作
建議37:推薦使用replace
建議38:正確認識正則表達式工作機制 
建議39:正確理解正則表達式回溯
建議40:正確使用正則表達式分組
建議41:正確使用正則表達式引用
建議42:用好正則表達式靜態(tài)值
建議43:使用exec增強正則表達式功能
建議44:正確使用原子組
建議45:警惕嵌套量詞和回溯失控
建議46:提高正則表達式執(zhí)行效率
建議47:避免使用正則表達式的場景
建議48:慎用正則表達式修剪字符串
建議49:比較數(shù)組與對象同源特性
建議50:正確檢測數(shù)組類型
建議51:理解數(shù)組長度的有限性和無限性
建議52:建議使用splice刪除數(shù)組
建議53:小心使用數(shù)組維度
建議54:增強數(shù)組排序的sort功能
建議55:不要拘泥于數(shù)字下標
建議56:使用arguments模擬重載
第3章 函數(shù)式編程
建議57:禁用Function構(gòu)造函數(shù)
建立58:靈活使用Arguments
建議59:推薦動態(tài)調(diào)用函數(shù)
建議60:比較函數(shù)調(diào)用模式
建議61:使用閉包跨域開發(fā)
建議62:在循環(huán)體和異步回調(diào)中慎重使用閉包
建議63:比較函數(shù)調(diào)用和引用本質(zhì)
建議64:建議通過Function擴展類型
建議65:比較函數(shù)的惰性求值與非惰性求值
建議66:使用函數(shù)實現(xiàn)歷史記錄
建議67:套用函數(shù)
建議68:推薦使用鏈式語法
建議69:使用模塊化規(guī)避缺陷
建議70:惰性實例化
建議71:推薦分支函數(shù)
建議72:惰性載入函數(shù)
建議73:函數(shù)綁定有價值
建議74:使用高階函數(shù)
建議75:函數(shù)柯里化
建議76:要重視函數(shù)節(jié)流
建議77:推薦作用域安全的構(gòu)造函數(shù)
建議78:正確理解執(zhí)行上下文和作用域鏈
第4章 面向?qū)ο缶幊?br />建議79:參照Object構(gòu)造體系分析prototype機制
建議80:合理使用原型
建議81:原型域鏈不是作用域鏈
建議82:不要直接檢索對象屬性值
建議83:使用原型委托
建議84:防止原型反射
建議85:謹慎處理對象的Scope 
建議86:使用面向?qū)ο竽M繼承
建議87:分辨this和function調(diào)用關系
建議88:this是動態(tài)指針,不是靜態(tài)引用
建議89:正確應用this
建議90:預防this誤用的策略
建議91:推薦使用構(gòu)造函數(shù)原型模式定義類
建議92:不建議使用原型繼承
建議93:推薦使用類繼承
建議94:建議使用封裝類繼承
建議95:慎重使用實例繼承
建議96:避免使用復制繼承
建議97:推薦使用混合繼承
建議98:比較使用JavaScript多態(tài)、重載和覆蓋
建議99:建議主動封裝類
建議100:謹慎使用類的靜態(tài)成員
建議101:比較類的構(gòu)造和析構(gòu)特性
建議102:使用享元類
建議103:使用摻元類
建議104:謹慎使用偽類
建議105:比較單例的兩種模式
第5章 DOM編程
建議106:建議先檢測瀏覽器對DOM支持程度 
建議107:應理清HTML DOM加載流程 
建議108:謹慎訪問DOM 
建議109:比較innerHTML與標準DOM方法
建議110:警惕文檔遍歷中的空格Bug
建議111:克隆節(jié)點比創(chuàng)建節(jié)點更好
建議112:謹慎使用HTML集合
建議113:用局部變量訪問集合元素
建議114:使用nextSibling抓取DOM
建議115:實現(xiàn)DOM原型繼承機制
建議116:推薦使用CSS選擇器
建議117:減少DOM重繪和重排版次數(shù)
建議118:使用DOM樹結(jié)構(gòu)托管事件
建議119:使用定時器優(yōu)化UI 隊列
建議120:使用定時器分解任務
建議121:使用定時器限時運行代碼
建議122:推薦網(wǎng)頁工人線程
第6章 客戶端編程
建議123:比較IE和W3C事件流
建議124:設計鼠標拖放方案
建議125:設計鼠標指針定位方案
建議126:小心在元素內(nèi)定位鼠標指針
建議127:妥善使用DOMContentLoaded事件
建議128:推薦使用beforeunload事件
建議129:自定義事件
建議130:從CSS樣式表中抽取元素尺寸
建議131:慎重使用offsetWidth和offsetHeight
建議132:正確計算區(qū)域大小
建議133:謹慎計算滾動區(qū)域大小
建議134:避免計算窗口大小
建議135:正確獲取絕對位置
建議136:正確獲取相對位置
第7章 數(shù)據(jù)交互和存儲
建議137:使用隱藏框架實現(xiàn)異步通信
建議138:使用iframe實現(xiàn)異步通信
建議139:使用script實現(xiàn)異步通信
建議140:正確理解JSONP異步通信協(xié)議
建議141:比較常用的服務器請求方法
建議142:比較常用的服務器發(fā)送數(shù)據(jù)方法
建議143:避免使用XML格式進行通信
建議144:推薦使用JSON格式進行通信
建議145:慎重使用HTML格式進行通信
建議146:使用自定義格式進行通信
建議147:Ajax性能向?qū)?br />建議148:使用本地存儲數(shù)據(jù)
建議149:警惕基于DOM的跨域侵入
建議150:優(yōu)化Ajax開發(fā)的最佳實踐
建議151:數(shù)據(jù)存儲要考慮訪問速度
建議152:使用局部變量存儲數(shù)據(jù)
建議153:警惕人為改變作用域鏈
建議154:慎重使用動態(tài)作用域
建議155:小心閉包導致內(nèi)存泄漏
建議156:靈活使用Cookie存儲長信息
建議157:推薦封裝Cookie應用接口
第8章 JavaScript引擎與兼容性
建議158:比較主流瀏覽器內(nèi)核解析
建議159:推薦根據(jù)瀏覽器特性進行檢測
建議160:關注各種引擎對ECMAScript v3的分歧
建議161:關注各種引擎對ECMAScript v3的補充
建議162:關注各種引擎對Event解析的分歧
建議163:關注各種引擎對DOM解析的分歧
建議164:關注各種引擎對CSS渲染的分歧
第9章 JavaScript編程規(guī)范和應用
建議165:不要混淆JavaScript與瀏覽器
建議166:掌握JavaScript預編譯過程
建議167:準確分析JavaScript執(zhí)行順序
建議168:避免二次評估
建議169:建議使用直接量
建議170:不要讓JavaScript引擎重復工作
建議171:使用位操作符執(zhí)行邏輯運算
建議172:推薦使用原生方法
建議173:編寫無阻塞JavaScript腳本
建議174:使腳本延遲執(zhí)行
建議175:使用XHR腳本注入
建議176:推薦最優(yōu)化非阻塞模式
建議177:避免深陷作用域訪問
建議178:推薦的JavaScript性能調(diào)優(yōu)
建議179:減少DOM操作中的Repaint和Reflow
建議180:提高DOM訪問效率
建議181:使用 setTimeout實現(xiàn)工作線程
建議182:使用 Web Worker
建議183:避免內(nèi)存泄漏
建議184:使用SVG創(chuàng)建動態(tài)圖形
建議185:減少對象成員訪問
建議186:推薦100 ms用戶體驗
建議187:使用接口解決JavaScript文件沖突
建議188:避免JavaScript與CSS沖突

章節(jié)摘錄

第1章JavaScript語言基礎對于任何語言來說,如何選用代碼的寫法和算法最終會影響到執(zhí)行效率。與其他語言不同,由于JavaScript可用資源有限,所以規(guī)范和優(yōu)化更為重要。代碼結(jié)構(gòu)是執(zhí)行速度的決定因素之一:代碼量少,運行速度不一定快;代碼量多,運行速度也不一定慢。性能損失與代碼的組織方式及具體問題的解決辦法直接相關。程序通常由很多部分組成,具體表現(xiàn)為函數(shù)、語句和表達式,它們必須準確無誤地按照順序排列。優(yōu)秀的程序應該擁有前瞻性的結(jié)構(gòu),可以預見到未來所需要的修改。優(yōu)秀的程序也有一種清晰的表達方式。如果一個程序被表達得很好,那么它更容易被理解,進而能夠成功地被修改或修復。JavaScript代碼經(jīng)常被直接發(fā)布,因此它應該自始至終具備發(fā)布質(zhì)量。整潔是會帶來價值的,通過在一個清晰且始終如一的風格下編寫的程序會更易于閱讀。JavaScript的弱類型和過度寬容特征,沒有為程序質(zhì)量帶來安全編譯時的保證,為了彌補這一點,我們應該按嚴格的規(guī)范進行編碼。JavaScript包含大量脆弱的或有問題的特性,這些會妨礙編寫優(yōu)秀的程序。我們應該避免JavaScript中那些糟糕的特性,還應該避免那些通常很有用但偶爾有害的特性。這樣的特性讓人既愛又恨,避免它們就能避免日后開發(fā)中潛在的錯誤。

編輯推薦

《編寫高質(zhì)量代碼:改善JavaScript程序的188個建議》編輯推薦:從語法、編程思想、編碼規(guī)范、工具方法總結(jié)出188個編寫高質(zhì)量JS代碼的技巧、禁忌和最佳實踐!

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    編寫高質(zhì)量代碼 PDF格式下載


用戶評論 (總計27條)

 
 

  •   書挺好的,講的建議也挺不錯的,對寫代碼很有幫助!
  •   很多很受用細節(jié),是前端值得一看好書
  •   內(nèi)容挺好,適合有js基礎的朋友
  •   不錯的書,通俗易懂,會好好學習。
  •   內(nèi)容很豐富 涉及面很多 需要好好研究
  •   書到了 全新 比較滿意 具體內(nèi)容還需要細看
  •   實戰(zhàn)系列的書,我買了很多,這本同樣也很不錯。
  •   程序員的休閑書
  •   講的很詳細,我特喜歡這本書
  •   只看了一半,受益頗多,值得一看。
  •   Standing on Shoulders of Giants.
  •   還不錯,挺快的,ok
  •   爸爸在看,工具書對他有用
  •   送貨挺快的,到手了,包裝還不錯,javascript開發(fā)時可以好好參考下
  •   不錯,有基礎的,看來把平時不注意的規(guī)范起來
  •   內(nèi)容不錯,很有收獲,學到了很多平時注意不到的小細節(jié)
  •   很好的補漏用書
  •   不錯的一本書,實戰(zhàn)解決問題的書籍
  •   很早買了這本書,現(xiàn)在還是沒有看完。書籍內(nèi)容還是比較全面,感覺是重復的內(nèi)容比較多。比較適合有一些基礎的js程序員
  •   里面的代碼只是給了一個思路,如果你拿去運行,會發(fā)現(xiàn) 很坑爹
  •   值得看一遍,不過可能有更好的選擇!
  •   涵蓋很全面,部分內(nèi)容和《高性能JavaScript》內(nèi)容一樣,算是借鑒吧(說抄襲太難聽了),但是本書還講解了其它一些難點和概念,適合進階,實用性上,仁者見仁吧,大部分代碼是原生的,使用Js庫的開發(fā)人員實用性會打折扣,對于學習和維護人員還是很不錯的!
  •   不錯,內(nèi)容一段段,覆蓋面挺全,適合有js基礎的人來復習
  •   新印刷的書,書的質(zhì)量不錯,內(nèi)容還沒看。書有一股刺鼻的氣味,要是這個能及時處理掉,那消費者會更加喜歡
  •   javascript高效編程
  •   書本的包裝還是不錯的
  •   js代碼提高
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7