注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)工業(yè)技術(shù)一般工業(yè)技術(shù)整潔代碼經(jīng)典實(shí)例

整潔代碼經(jīng)典實(shí)例

整潔代碼經(jīng)典實(shí)例

定 價(jià):¥148.00

作 者: [阿根廷]馬克西米利亞諾 孔蒂耶里(Maximiliano Contieri)
出版社: 中國(guó)電力出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買這本書(shū)可以去


ISBN: 9787519892401 出版時(shí)間: 2024-10-01 包裝: 平裝-膠訂
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)通過(guò)JavaScript、PHP、Python、Java等多種編程語(yǔ)言的真實(shí)示例,提供了經(jīng)過(guò)驗(yàn)證的實(shí)踐方法,幫助你擴(kuò)展和維護(hù)大型系統(tǒng)。每章涵蓋了包括可讀性、耦合性、可測(cè)試性、安全性和可擴(kuò)展性在內(nèi)的基本概念,還有代碼壞味道及其相應(yīng)的解決方案。隨著閱讀的深入,本書(shū)中的重構(gòu)實(shí)例及其解決的問(wèn)題會(huì)變得越來(lái)越復(fù)雜。你將學(xué)習(xí)以下內(nèi)容:理解整潔代碼的好處,并學(xué)習(xí)如何識(shí)別改進(jìn)機(jī)會(huì)。逐步學(xué)習(xí)重構(gòu)技術(shù)。理解整潔代碼背后的理論。在多種現(xiàn)代編程語(yǔ)言中看到實(shí)際的例子。獲得代碼壞味道的全面列表,了解它們的影響及可能的解決方案。編寫簡(jiǎn)潔直觀的代碼,注重可讀性和學(xué)習(xí)性。

作者簡(jiǎn)介

  Maximiliano Contieri在軟件行業(yè)工作了25年,同時(shí)在布宜諾斯艾利斯大學(xué)教授計(jì)算機(jī)科學(xué)。他還在流行的博客平臺(tái)和會(huì)議上發(fā)表了關(guān)于整潔代碼、重構(gòu)和代碼壞味道的文章。他提倡利用軟件基礎(chǔ)原理構(gòu)建優(yōu)雅而健壯的解決方案,倡導(dǎo)聲明式和行為式編碼風(fēng)格。

圖書(shū)目錄

目錄
序 1
前言 3
第1 章 整潔代碼 9
1.1 什么是代碼壞味道? .9
1.2 重構(gòu)是什么? .10
1.3 什么是經(jīng)典實(shí)例? 10
1.4 為什么要寫整潔的代碼? 11
1.5 可讀性、性能,或者兩者兼而有之. 11
1.6 軟件類型 11
1.7 機(jī)器生成的代碼 12
1.8 本書(shū)中的命名考慮 12
1.9 設(shè)計(jì)模式13
1.10 編程語(yǔ)言范式 13
1.11 對(duì)象與類的比較 13
1.12 可變性 .14
第2 章 建立原則 15
2.0 引言 .15
2.1 為什么它是一個(gè)模型? .16
2.2 為什么它是抽象的? 16
2.3 為什么它是可編程的? .16
2.4 為什么它是部分的? 17
2.5 為什么它是解釋性的? .17
2.6 為什么它與現(xiàn)實(shí)有關(guān)? .18
2.7 推斷規(guī)則18
2.8 唯一的軟件設(shè)計(jì)原則 18
第3 章 貧血模型 25
3.0 引言 .25
3.1 將貧血對(duì)象轉(zhuǎn)換為豐富對(duì)象 26
3.2 識(shí)別你的對(duì)象的本質(zhì) 28
3.3 移除對(duì)象中的setter .30
3.4 移除貧血代碼生成器 32
3.5 移除自動(dòng)屬性 .34
3.6 移除DTO .35
3.7 完善空構(gòu)造函數(shù) 39
3.8 移除getter 40
3.9 防止對(duì)象隨意調(diào)用 44
3.10 移除動(dòng)態(tài)屬性 45
第4 章 原始偏執(zhí) 49
4.0 引言 .49
4.1 創(chuàng)建小對(duì)象 50
4.2 實(shí)例化原始數(shù)據(jù) 52
4.3 實(shí)例化關(guān)聯(lián)數(shù)組 53
4.4 移除濫用字符串 55
4.5 實(shí)例化時(shí)間戳 .57
4.6 實(shí)例化子集為對(duì)象 58
4.7 實(shí)例化字符串驗(yàn)證 59
4.8 移除不必要的屬性 62
4.9 創(chuàng)建日期區(qū)間 .64
第5 章 可變性 67
5.0 引言 .67
5.1 將變量改為常量 69
5.2 聲明變量為可變變量 70
5.3 禁止改變本質(zhì) .72
5.4 避免可變的常量數(shù)組 74
5.5 移除延遲初始化 76
5.6 凍結(jié)可變常量 .78
5.7 移除副作用 81
5.8 防止提升82
第6 章 聲明式代碼 85
6.0 引言 .85
6.1 縮小重用變量的范圍 86
6.2 移除空行87
6.3 移除帶版本的方法 89
6.4 移除雙重否定 .90
6.5 改變錯(cuò)位的責(zé)任 91
6.6 替換顯式迭代 .93
6.7 記錄設(shè)計(jì)決策 .94
6.8 用常量替換魔法數(shù)字 95
6.9 分離“是什么”和“怎么做” 97
6.10 文檔化正則表達(dá)式 .98
6.11 重寫Yoda 條件 99
6.12 移除滑稽方法 100
6.13 避免回調(diào)地獄 101
6.14 生成良好的錯(cuò)誤消息 .104
6.15 避免魔法修正 106
第7 章 命名 . 109
7.0 引言 109
7.1 擴(kuò)展縮寫.109
7.2 重命名和拆分Helpers 和Utils 112
7.3 重命名MyObjects . 115
7.4 重命名結(jié)果變量 . 116
7.5 重命名以類型命名的變量 . 118
7.6 重命名長(zhǎng)名稱 119
7.7 重命名抽象名稱 .120
7.8 更正拼寫錯(cuò)誤 122
7.9 從屬性中移除類名 .122
7.10 移除類和接口的首字母 124
7.11 重命名base/do 函數(shù) 125
7.12 將復(fù)數(shù)類轉(zhuǎn)換為單數(shù) .127
7.13 從名稱中移除“Collection” .128
7.14 移除類名中的“Impl”前綴/ 后綴 .129
7.15 根據(jù)角色重命名參數(shù) .130
7.16 移除冗余的參數(shù)名稱 .131
7.17 移除名稱中的不必要上下文 133
7.18 避免數(shù)據(jù)命名 134
第8 章 注釋 . 137
8.0 引言 137
8.1 刪除被注釋的代碼 .138
8.2 刪除過(guò)時(shí)的注釋 .140
8.3 刪除邏輯注釋 141
8.4 刪除Getter 注釋 .143
8.5 將注釋轉(zhuǎn)換為函數(shù)名稱 144
8.6 刪除方法內(nèi)的注釋 .145
8.7 用測(cè)試替換注釋 148
第9 章 標(biāo)準(zhǔn) . 151
9.0 引言 151
9.1 遵循代碼規(guī)范 151
9.2 統(tǒng)一縮進(jìn)方式 154
9.3 統(tǒng)一命名規(guī)范 156
9.4 用英文編寫代碼 .157
9.5 統(tǒng)一參數(shù)順序 159
9.6 修復(fù)另外的問(wèn)題 .160
第10 章 復(fù)雜性 163
10.0 引言 163
10.1 移除重復(fù)代碼 163
10.2 移除設(shè)置/ 配置和功能切換 166
10.3 將狀態(tài)作為屬性更改 .167
10.4 移除代碼中的特殊設(shè)計(jì) 170
10.5 打破多個(gè)Promises 172
10.6 打破長(zhǎng)鏈的協(xié)作 173
10.7 將方法提取到對(duì)象中 .175
10.8 關(guān)注數(shù)組構(gòu)造函數(shù) 177
10.9 移除幽靈對(duì)象 179
第11 章 膨脹者 181
11.0 引言 181
11.1 分解過(guò)長(zhǎng)的方法 181
11.2 減少過(guò)多參數(shù) 183
11.3 減少多余變量 185
11.4 移除過(guò)多的括號(hào) 188
11.5 移除過(guò)多的方法 189
11.6 分解過(guò)多的屬性 190
11.7 減少導(dǎo)入列表 192
11.8 拆分“與”功能 193
11.9 拆分臃腫的接口 195
第12 章 YAGNI 199
12.0 引言 199
12.1 移除死代碼 .200
12.2 使用代碼代替圖表 201
12.3 重構(gòu)只有一個(gè)子類的類 203
12.4 移除只使用一次的接口 205
12.5 移除設(shè)計(jì)模式的濫用 .207
12.6 替換業(yè)務(wù)集合 208
第13 章 快速失敗 211
13.0 引言 211
13.1 變量重新賦值的重構(gòu) . 211
13.2 強(qiáng)制前提條件 213
13.3 使用更嚴(yán)格的參數(shù) 216
13.4 移除開(kāi)關(guān)語(yǔ)句中的默認(rèn)情況 217
13.5 避免在遍歷時(shí)修改集合 219
13.6 重新定義哈希和相等性 220
13.7 無(wú)功能性變化的重構(gòu) .222
第14 章 條件語(yǔ)句 225
14.0 引言 225
14.1 用多態(tài)替換偶然的if 語(yǔ)句 226
14.2 為事件重命名標(biāo)志變量 234
14.3 實(shí)例化布爾變量 235
14.4 替換Switch/Case/elseif 語(yǔ)句 .237
14.5 使用集合替換硬編碼的if 條件 .239
14.6 將布爾值改為短路條件 241
14.7 添加隱式else .242
14.8 重寫條件箭頭代碼 243
14.9 避免使用短路技巧 245
14.10 重寫嵌套的箭頭代碼 247
14.11 避免返回布爾值進(jìn)行條件檢查 249
14.12 更改布爾值的比較方式 .251
14.13 從長(zhǎng)三元表達(dá)式中提取 .252
14.14 將非多態(tài)函數(shù)轉(zhuǎn)換為多態(tài)函數(shù) 254
14.15 改變相等比較 .256
14.16 使硬編碼的業(yè)務(wù)條件具體化 257
14.17 移除不必要的布爾值 258
14.18 重寫嵌套三元條件 259
第15 章 空值 263
15.0 簡(jiǎn)介 263
15.1 創(chuàng)建空對(duì)象 .263
15.2 移除可選鏈路 267
15.3 將可選屬性轉(zhuǎn)換為集合 270
15.4 使用真實(shí)對(duì)象作為空對(duì)象272
15.5 不使用空對(duì)象表示未知位置 275
第16 章 過(guò)早優(yōu)化 279
16.0 引言 279
16.1 避免對(duì)象上的標(biāo)識(shí)符 .280
16.2 移除過(guò)早的優(yōu)化 283
16.3 移除位運(yùn)算的過(guò)早優(yōu)化 285
16.4 減少過(guò)度泛化 286
16.5 改變結(jié)構(gòu)優(yōu)化 287
16.6 移除錨定船只 289
16.7 從領(lǐng)域?qū)ο笾刑崛【彺?290
16.8 基于實(shí)現(xiàn)的回調(diào)事件的移除 293
16.9 移除構(gòu)造函數(shù)中的查詢 294
16.10 從析構(gòu)函數(shù)中移除代碼 .295
第17 章 耦合 299
17.0 引言 299
17.1 顯式化隱藏假設(shè) 299
17.2 替換單例模式 301
17.3 打破上帝對(duì)象 304
17.4 打破分歧性變更 307
17.5 將9999 特殊標(biāo)志值轉(zhuǎn)換為正常值 .309
17.6 移除散彈代碼 311
17.7 移除可選參數(shù) 313
17.8 防止特性依戀 315
17.9 移除中間人 .317
17.10 將默認(rèn)參數(shù)移到末尾 319
17.11 避免連鎖反應(yīng) .321
17.12 移除業(yè)務(wù)對(duì)象上的意外方法 323
17.13 從用戶界面中移除業(yè)務(wù)代碼 324
17.14 改變類之間的耦合 328
17.15 重構(gòu)數(shù)據(jù)團(tuán) 330
17.16 打破不恰當(dāng)?shù)挠H密關(guān)系 .332
17.17 轉(zhuǎn)換可互換對(duì)象.334
第18 章 全局變量 337
18.0 引言 337
18.1 實(shí)例化全局函數(shù) 337
18.2 實(shí)例化靜態(tài)函數(shù) 339
18.3 用結(jié)構(gòu)化代碼替換GoTo .340
18.4 移除全局類 .341
18.5 改變?nèi)秩掌趧?chuàng)建 344
第19 章 層次結(jié)構(gòu) 347
19.0 引言 347
19.1 打破深層繼承 347
19.2 打破悠悠球?qū)哟谓Y(jié)構(gòu) .350
19.3 打破子分類以重用代碼 352
19.4 用行為替換“is-a”關(guān)系 .355
19.5 移除嵌套類 .357
19.6 重命名孤立類 359
19.7 使具體類成為最終類 .360
19.8 顯式定義類的繼承關(guān)系 362
19.9 遷移空類 364
19.10 推遲過(guò)早的分類.366
19.11 移除受保護(hù)的屬性 368
19.12 完成空實(shí)現(xiàn) 370
第20 章 測(cè)試 373
20.0 引言 373
20.1 測(cè)試私有方法 374
20.2 為斷言添加描述 376
20.3 將 assertTrue 遷移到特定斷言 377
20.4 用真實(shí)對(duì)象替換模擬對(duì)象 379
20.5 優(yōu)化通用斷言 382
20.6 移除不穩(wěn)定的測(cè)試 383
20.7 更改浮點(diǎn)數(shù)斷言 385
20.8 將測(cè)試數(shù)據(jù)改為真實(shí)數(shù)據(jù)386
20.9 保護(hù)違反封裝的測(cè)試 .389
20.10 移除不相關(guān)的測(cè)試信息 .391
20.11 在每個(gè)合并請(qǐng)求中添加覆蓋率 393
20.12 根據(jù)日期重寫測(cè)試 394
20.13 學(xué)習(xí)一種新的編程語(yǔ)言 .396
第21 章 技術(shù)債務(wù) 399
21.0 引言 399
21.1 移除依賴于生產(chǎn)環(huán)境的代碼 400
21.2 移除缺陷跟蹤器 402
21.3 移除警告/ 嚴(yán)格模式關(guān)閉 403
21.4 預(yù)防和移除 ToDo 和 FixMe 405
第22 章 異常 407
22.0 引言 407
22.1 刪除空的異常塊 407
22.2 刪除不必要的異常 409
22.3 重寫預(yù)期情況下的異常 411
22.4 重寫嵌套的try/catch 塊 412
22.5 用異常替換返回代碼 .414
22.6 重寫異常箭頭代碼 416
22.7 隱藏終端用戶的低級(jí)錯(cuò)誤418
22.8 縮小異常范圍 419
第23 章 元編程 423
23.0 簡(jiǎn)介 423
23.1 移除元編程用法 424
23.2 實(shí)例化匿名函數(shù) 428
23.3 移除預(yù)處理器 430
23.4 移除動(dòng)態(tài)方法 431
第24 章 類型 435
24.0 引言 435
24.1 移除類型檢查 435
24.2 處理真值 437
24.3 將浮點(diǎn)數(shù)改為小數(shù) 441
第25 章 安全性 443
25.0 引言 443
25.1 輸入過(guò)濾 443
25.2 更改順序ID 445
25.3 移除包依賴 .447
25.4 替換惡意正則表達(dá)式 .449
25.5 保護(hù)對(duì)象反序列化 450
術(shù)語(yǔ)表 453

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) www.stefanvlieger.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)