3dwoo大學簡體電腦書店
編寫可靠的JavaScript代碼 測試驅動開發JavaScript商業軟件
( 簡體 字)
作者:[美] Lawrence D. Spencer,Seth H. Richards 著 王肖峰 譯類別:1. -> 程式設計 -> 網路編程 -> Javascript
出版社:清華大學出版社編寫可靠的JavaScript代碼 測試驅動開發JavaScript商業軟件 3dWoo書號: 44869
詢問書籍請說出此書號!
有庫存
NT售價: 350
出版日:8/1/2016
頁數:467
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787302443971 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第Ⅰ部分奠定堅實的基礎

第1章實踐軟件工程 3

1.1編寫從開始就正確的代碼 4

1.1.1掌握JavaScript的特性 4

1.1.2在大型系統中規避JavaScript陷阱 15

1.1.3應用軟件工程原則 17

1.2編寫保持正確的代碼 22

1.2.1投資單元測試的未來 22

1.2.2實踐測試驅動開發 22

1.2.3編寫易于測試的代碼 23

1.3小結 26

第2章準備工具 27

2.1使用測試框架 27

2.1.1辨別不正確的代碼 30

2.1.2可測試性設計 32

2.1.3編寫最少的代碼 33

2.1.4安全維護和重構 33

2.1.5可運行規范 34

2.1.6當前的開源和商業框架 34

2.1.7介紹Jasmine 36

2.2使用依賴注入框架 41

2.2.1依賴注入的定義 41

2.2.2使用依賴注入讓代碼更可靠 43

2.2.3掌握依賴注入 43

2.2.4案例研究:編寫一個輕量級依賴注入框架 43

2.2.5使用依賴注入框架 50

2.2.6當前的依賴注入框架 52

2.3使用切面工具 53

2.3.1案例研究:使用和不使用AOP進行緩存 53

2.3.2案例研究:構建Aop.js模塊 55

2.3.3其他AOP庫 67

2.3.4結論 68

2.4使用代碼檢查工具 68

2.4.1使用linting工具讓代碼更可靠 68

2.4.2JSHint簡介 71

2.4.3其他工具 73

2.4.4嚴格模式 74

2.5小結 74

第3章構造可靠的對象 75

3.1使用原生數據 75

3.2使用對象字面量 77

3.3使用模塊模式 78

3.3.1創建任意模塊 78

3.3.2創建立即執行模塊 79

3.3.3創建可靠的模塊 80

3.4使用對象原型和原型繼承 80

3.4.1默認對象原型 80

3.4.2原型繼承 81

3.4.3原型鏈 82

3.5使用new創建對象 83

3.6使用類繼承 88

3.6.1模擬類繼承 88

3.6.2重復將殺死Kangaroo 89

3.7使用函數式繼承 91

3.8猴子補丁(Monkey-Patching) 92

3.9小結 95

第Ⅱ部分測試基于模式的代碼

第4章瀏覽各種模式的優點 99

4.1案例分析 99

4.2通過更廣泛的詞匯產生更加優雅的代碼 100

4.3使用擁有良好設計、良好測試的構建塊產生可靠的代碼 101

4.4小結 102

第5章確保回調模式的正確使用 103

5.1通過單元測試了解回調模式 104

5.1.1編寫和測試使用了回調函數的代碼 104

5.1.2編寫和測試回調函數 109

5.2避免問題 113

5.2.1扁平化回調箭頭 113

5.2.2注意this變量 115

5.3小結 119

第6章確保承諾模式的正確使用 121

6.1通過單元測試了解承諾 122

6.1.1使用承諾 122

6.1.2構造和返回承諾 127

6.1.3測試XMLHttpRequest 130

6.2串聯承諾 133

6.3使用承諾封裝器 134

6.4了解狀態和命運 135

6.5區分標準承諾和jQuery承諾 135

6.6小結 136

第7章確保正確使用散函數應用程序 137

7.1對散函數應用程序進行單元測試 137

7.2為散函數應用程序創建切面 139

7.3區分散函數應用程序和柯里化 140

7.3.1柯里化 140

7.3.2散函數應用程序 141

7.4小結 141

第8章確保備忘錄模式的正確使用 143

8.1通過單元測試了解備忘錄模式 144

8.2使用AOP添加備忘錄 147

8.2.1創建備忘錄切面 147

8.2.2為restaurantApi應用returnValueCache切面 150

8.3小結 152

第9章確保單例模式的正確實現 153

9.1通過單元測試了解單例模式 154

9.1.1使用對象字面量實現單例共享緩存 154

9.1.2使用模塊實現單例共享緩存 158

9.2小結 162

第10章確保工廠模式的正確實現 163

10.1為工廠編寫單元測試 163

10.2實現工廠模式 169

10.3考慮其他工廠類型 171

10.4小結 171

第11章確保沙箱模式的正確實現和使用 173

11.1通過單元測試了解沙箱模式 173

11.1.1創建部件沙箱 174

11.1.2創建和測試沙箱工具 187

11.1.3創建與沙箱一起使用的函數 191

11.2小結 193

第12章確保裝飾器模式的正確實現 195

12.1使用測試驅動的方式開發裝飾器 196

12.1.1為被裝飾的對象編寫一個假對象 197

12.1.2為錯誤的傳遞編寫測試 198

12.1.3編寫空白裝飾器 199

12.1.4添加傳遞功能到裝飾器 200

12.1.5驗證成功傳遞 202

12.1.6添加裝飾器的特性 204

12.1.7通用化裝飾器 210

12.2小結 211

第13章確保策略模式的正確實現 213

13.1通過單元測試了解該模式 213

13.1.1在不使用策略模式的情況下實現transportScheduler 214

13.1.2使用策略模式實現transportScheduler 216

13.2小結 227

第14章確保代理模式的正確實現 229

14.1通過測試驅動的方式開發代理 230

14.2小結 245

第15章確保正確實現可鏈接方法 247

15.1通過單元測試了解該模式 248

15.2鏈接then方法 255

15.3小結 257

第Ⅲ部分測試和編寫高級JavaScript特性

第16章在無接口語言中遵守接口 261

16.1了解接口的優點 262

16.2了解接口隔離原則 263

16.3使用測試驅動開發創建契約注冊表 265

16.3.1定義契約 266

16.3.2判斷是否履行了契約 267

16.3.3斷言契約被履行了 271

16.3.4繞過契約執行 273

16.3.5創建在被返回(創建)的對象上實施契約的切面 273

16.4小結 277

第17章確保正確的參數類型 279

17.1了解JavaScript無類型參數帶來的機會和風險 280

17.2擴展ContractRegistry檢查參數 280

17.2.1界定任務范圍 280

17.2.2判斷集合中的所有變量是否都履行了它的契約 281

17.2.3斷言集合中的所有變量都履行了它的契約 289

17.2.4在切面中打包參數檢查功能 290

17.3支持契約庫 292

17.4綜合起來 293

17.4.1創建契約模塊 293

17.4.2創建應用程序的ContractRegistry 296

17.4.3為生產發布繞過契約 297

17.5比較面向切面的解決方案和靜態解決方案 297

17.5.1考慮TypeScript的優點 297

17.5.2考慮切面的優點 297

17.6小結 298

第18章確保正確使用call、apply和bind 299

18.1瀏覽this是如何綁定的 299

18.1.1默認綁定 300

18.1.2隱式綁定 302

18.1.3new綁定 303

18.1.4顯式綁定 305

18.2創建和測試使用call、apply和bind的代碼 305

18.2.1使用call和apply 305

18.2.2使用測試驅動開發創建一個Array.prototype.forEachPolyfill 307

18.2.3使用bind 316

18.3小結 321

第19章確保正確使用方法借用 323

19.1確保借用對象符合需求 324

19.1.1讓被借用的函數驗證借用者的資格 324

19.1.2向被借用的對象附加切面 326

19.1.3使用borrow()方法 329

19.1.4在ContractRegistry中添加對象驗證器 330

19.2預期借用者的副作用 331

19.2.1考慮被隔離函數的副作用 331

19.2.2考慮調用其他函數的函數的副作用 332

19.3預期捐贈者對象的副作用 338

19.4小結 339

第20章確保正確使用混合 341

20.1創建和使用混合 343

20.1.1創建和使用傳統混合 344

20.1.2創建和使用函數式混合 361

20.2小結 367

第21章測試高級程序架構 369

21.1確保觀察者模式的可靠使用 369

21.1.1檢查觀察者模式 370

21.1.2增強觀察者模式的可靠性 376

21.2確保中介者模式的可靠使用 380

21.2.1了解中介者模式 381

21.2.2增強基于中介者代碼的可靠性 382

21.3小結 395

第Ⅳ部分測試中的特殊主題

第22章測試DOM訪問 399

22.1對UI進行單元測試 399

22.1.1檢查難于測試的UI代碼 400

22.1.2使用TDD創建UI組件 401

22.2使用分析器優化代碼 411

22.2.1檢測低效代碼 411

22.2.2避免不成熟的優化 418

22.3小結 418

第23章確保符合標準 419

23.1使用ESLint 420

23.1.1安裝ESLint 420

23.1.2運行ESLint 424

23.1.3使用ESLint實施代碼標準 427

23.2實施架構分離 432

23.2.1家庭秘密技術 433

23.2.2銘記技術 435

23.2.3不可能任務(MissionImpossible)技術 437

23.2.4魔術棒(MagicWand)

技術 441

23.2.5不要使用調用棧技術 442

23.2.6其他技術 442

23.2.7其他架構 442

23.3小結 443

第Ⅴ部分總結

第24章測試驅動開發原則的總結 447

24.1回顧值得使用測試驅動開發的原因 447

24.2練習測試驅動開發 448

24.3編寫可單元測試的代碼 448

24.4掌握測試驅動開發的

技術 448

24.4.1在編碼之前編寫測試 448

24.4.2保持測試DRY 449

24.4.3首先測試錯誤條件 449

24.4.4測試要先易后難 449

24.4.5具體 449

24.4.6只測試一件事情 450

24.4.7測試數據如同測試一樣重要 450

24.4.8高效地使用Jasmine 450

24.5測試本書描述的模式 450

24.5.1測試面向切面編程 450

24.5.2測試對象構造 451

24.5.3測試回調 451

24.5.4測試基于承諾的代碼 451

24.5.5測試散函數應用程序 451

24.5.6測試備忘錄模式 452

24.5.7測試單例模式 452

24.5.8測試工廠模式 452

24.5.9測試沙箱 452

24.5.10測試裝飾器模式 453

24.5.11測試策略模式 453

24.5.12測試代理模式 453

24.5.13測試可鏈接方法 453

24.5.14測試接口一致性 453

24.5.15測試call和apply的

使用 453

24.5.16測試方法借用模式 454

24.5.17測試混合 454

24.5.18測試中介者和觀察者模式 454

24.5.19測試DOM訪問 454

24.5.20實施架構分離的測試 454

24.6小結 455

第25章本書JavaScript習語的總結 457

25.1回顧對象 457

25.1.1可以添加和刪除的對象屬性 457

25.1.2可以將對象用作詞典 458

25.2回顧變量 459

25.2.1提升變量聲明 459

25.2.2變量有函數作用域 460

25.3回顧函數 463

25.3.1函數是對象 463

25.3.2提升函數聲明 463

25.3.3函數沒有返回類型 464

25.3.4函數可以是匿名的 465

25.3.5函數可以被嵌套 465

25.3.6函數調用可以使用任意數量的參數 466

25.3.7函數可以立即被調用 467

25.4回顧布爾操作 468

25.4.1在測試相等性時類型可能會被強制轉換 468

25.4.2值可以是真或假 469

25.5小結 469

本書分為5個部分:
第Ⅰ部分“奠定堅實的基礎”涵蓋了軟件工程的關鍵概念,例如SOLID和DRY原

則,還討論了單元測試和測試驅動開發的優點。
在第Ⅱ部分“測試基于模式的代碼”中,我們描述并使用測試驅動開發創建了

幾個有用的代碼模式。
第Ⅲ部分“測試和編寫高級JavaScript特性”描述了如何使用和測試

JavaScript語言更高級的特性。
第Ⅳ部分“測試中的特殊主題”提供了測試DOM操作的樣例,還演示了用于增

強代碼標準的靜態分析工具的使用。
第Ⅴ部分“總結”回顧了測試驅動開發的概念,還展示了一些本書用到的JavaScript習

語。
pagetop