代碼精進之路:從碼農到工匠 | 被動收入的投資秘訣 - 2024年7月
![](https://www.books.com.tw/img/CN1/171/17/CN11711773.jpg)
代碼精進之路:從碼農到工匠
這是一本為專業程式師而寫的書,寫好代碼、追求卓越和工匠精神是每個程式師都應該具備的優秀品質。
本書共有13章內容,主要分為技藝部分、思想部分和實踐部分。技藝部分詳細介紹了程式設計技巧和方法論,並配以詳盡的代碼案例,有助於讀者提高編寫代碼的能力,優化代碼品質。思想部分主要包括抽象能力、分治思想,以及程式師應該具備的素養等內容。實踐部分主要介紹了常見的應用架構模式,以及COLA架構的設計原理。
張建飛,集團高級技術專家,Java全球管理組織(JCP)執行委員會正式會員(Full Member)。2007年電腦工程碩士畢業後,先後在軟體公司Info Sys與互聯網公司eBay擔任高級研發和技術專家的職務。2014年加入,先後在1688、ICBU和零售通擔任技術主管。
作者精通物件導向技術,有豐富的一線編碼實戰和架構經驗。特別是在應用架構、領域建模和複雜度治理領域,自研了COLA框架。COLA自開源以來,已經被多個技術團隊使用,解決了DDD落地和應用擴展問題,受到了普遍關注和一致好評。
作者提倡“工匠精神”,對於如何打造一個追求卓越、獨具匠心的技術團隊,如何量化考核工程師的技術貢獻,都有著非常深入的思考和實踐,並探索出一套切實可行的方法論。基於該方法論打造的“工匠平臺”,在內部被廣泛使用,“工匠平臺”豐富了對技術人員考察的維度,是除業務結果之外的從技術視角給技術人員“照鏡子”的有效工具。
第一部分 技藝
第 1 章 命名/ 3
1.1 命名的力量/ 3
1.2 命名其實很難/ 4
1.3 有意義的命名/ 5
1.3.1 變數名/ 5
1.3.2 函數名/ 5
1.3.3 類名/ 6
1.3.4 包名/ 7
1.3.5 模組名/ 7
1.4 保持一致性/ 7
1.4.1 每個概念一個詞/ 8
1.4.2 使用對仗詞/ 8
1.4.3 後置限定詞/ 9
1.4.4 統一業務語言/ 10
1.4.5 統一技術語言/ 10
1.5 自明的代碼/ 10
1.5.1 中間變數/ 11
1.5.2 設計模式語言/ 11
1.5.3 小心注釋/ 12
1.6 命名工具/ 14
1.7 本章小結/ 15
第 2 章規範/ 16
2.1 認知成本/ 16
2.2 混亂的代價/ 17
2.3 代碼規範/ 18
2.3.1 代碼格式/ 18
2.3.2 空行規範/ 19
2.3.3 命名規範/ 21
2.3.4 日誌規範/ 22
2.3.5 異常規範/ 25
2.4 埋點規範/ 28
2.5 架構規範/ 30
2.6 防止破窗/ 30
2.7 本章小結/ 31
第 3 章 函數/ 32
3.1 什麼是函數/ 32
3.2 軟體中的函數/ 33
3.3 封裝判斷/ 33
3.4 函數參數/ 34
3.5 短小的函數/ 35
3.6 職責單一/ 36
3.7 精簡輔助代碼/ 37
3.7.1 優化判空/ 37
3.7.2 優化緩存判斷/ 38
3.7.3 優雅降級/ 39
3.8 組合函數模式/ 40
3.9 SLAP/ 43
3.10 函數式程式設計/ 48
3.11 本章小結/ 49
第 4 章 設計原則/ 51
4.1 SOLID概覽/ 51
4.2 SRP/ 52
4.3 OCP/ 53
4.4 LSP/ 54
4.4.1 警惕instanceof/ 55
4.4.2 子類覆蓋父類函數/ 55
4.5 ISP/ 57
4.6 DIP/ 58
4.7 DRY/ 61
4.8 YAGNI/ 61
4.9 RuleofThree/ 62
4.10 KISS原則/ 62
4.11 POLA原則/ 63
4.12 本章小結/ 63
第 5 章 設計模式/ 64
5.1 模式/ 64
5.2 GoF/ 65
5.3 攔截器模式/ 69
5.4 外掛程式模式/ 73
5.5 管道模式/ 75
5.5.1 鏈式管道/ 75
5.5.2 流處理/ 78
5.6 本章小結/ 79
第 6 章 模型/ 81
6.1 什麼是模型/ 81
6.1.1 物理模型/ 82
6.1.2 數學模型/ 82
6.1.3 概念模型/ 82
6.1.4 思維模型/ 83
6.1.5 模型不能代替現實/ 83
6.2 UML/ 84
6.3 類圖/ 85
6.3.1 類的UML標記法/ 86
6.3.2 類的關聯關係/ 87
6.3.3 類的依賴關係/ 92
6.3.4 類的泛化關係/ 93
6.3.5 介面與實現關係/ 94
6.4 領域模型/ 95
6.5 敏捷建模/ 96
6.6 廣義模型/ 97
6.6.1 C4模型/ 97
6.6.2 UI流程圖/ 97
6.6.3 業務模型/ 98
6.7 本章小結/ 99
第 7 章 DDD的精髓/ 101
7.1 什麼是DDD/ 101
7.2 初步體驗DDD/ 102
7.3 資料驅動和領域驅動/ 104
7.3.1 資料驅動/ 104
7.3.2 領域驅動/ 106
7.3.3 ORM/ 108
7.4 DDD的優勢/ 109
7.4.1 統一語言/ 110
7.4.2 物件導向/ 110
7.4.3 業務語義顯性化/ 111
7.4.4 分離業務邏輯和技術細節/ 111
7.5 DDD的核心概念/ 112
7.5.1 領域實體/ 112
7.5.2 聚合根/ 114
7.5.3 領域服務/ 115
7.5.4 領域事件/ 116
7.5.5 邊界上下文/ 117
7.6 領域建模方法/ 118
7.6.1 用例分析法/ 118
7.6.2 四色建模法/ 121
7.7 模型演化/ 127
7.8 為什麼DDD飽受爭議/ 127
7.8.1 照搬概念/ 128
7.8.2 抽象的靈活性/ 128
7.8.3 領域層的邊界/ 128
7.9 本章小結/ 130
第二部分 思想
第 8 章 抽象/ 133
8.1 偉大的抽象/ 133
8.2 到底什麼是抽象/ 134
8.3 抽象是OO的基礎/ 135
8.4 抽象的層次性/ 136
8.5 如何進行抽象/ 137
8.5.1 尋找共性/ 137
8.5.2 提升抽象層次/ 139
8.5.3 構築金字塔/ 142
8.6 如何提升抽象思維/ 143
8.6.1 多閱讀/ 144
8.6.2 多總結/ 144
8.6.3 領域建模訓練/ 145
8.7 本章小結/ 145
第 9 章 分治/ 146
9.1 分治演算法/ 146
9.1.1 歸併排序/ 147
9.1.2 二分搜索/ 148
9.1.3 K選擇問題/ 149
9.2 函數分解/ 150
9.3 寫代碼的兩次創造/ 150
9.3.1 第一遍實現功能/ 150
9.3.2 第二遍重構優化/ 151
9.4 分治模式/ 151
9.5 分層設計/ 152
9.5.1 分層網路模型/ 152
9.5.2 分層架構/ 153
9.6 橫切和豎切/ 154
9.7 本章小結/ 155
第 10 章 技術人的素養/ 156
10.1 不教條/ 156
10.1.1 瀑布還是敏捷/ 157
10.1.2 貧血還是充血/ 158
10.1.3 單體還是分散式/ 159
10.2 批判性思維/ 161
10.3 成長型思維/ 162
10.4 結構化思維/ 163
10.4.1 如何落地新團隊/ 165
10.4.2 如何做晉升述職/ 166
10.5 工具化思維/ 167
10.6 好奇心/ 169
10.7 記筆記/ 170
10.8 有目標/ 171
10.9 選擇的自由/ 172
10.10 平和的心態/ 173
10.11 精進/ 174
10.12 本章小結/ 174
第 11 章 技術Leader的修養/ 175
11.1 技術氛圍/ 175
11.1.1 代碼好壞味道/ 176
11.1.2 技術分享/ 176
11.1.3 CR週報/ 177
11.1.4 讀書會/ 178
11.2 目標管理/ 179
11.2.1 什麼是OKR/ 179
11.2.2 SMART原則/ 180
11.2.3 OKR設定/ 181
11.3 技術規劃/ 182
11.3.1 當前問題/ 182
11.3.2 技術領域/ 183
11.3.3 業務領域/ 183
11.3.4 團隊特色/ 183
11.4 推理階梯/ 184
11.5 Leader和Manager的區別/ 185
11.6 視人為人/ 186
11.7 本章小結/ 187
第三部分 實踐
第 12 章 COLA架構/ 191
12.1 軟體架構/ 191
12.2 典型的應用架構/ 193
12.2.1 分層架構/ 193
12.2.2 CQRS/ 195
12.2.3 六邊形架構/ 196
12.2.4 洋蔥架構/ 198
12.2.5 DDD/ 199
12.3 COLA架構設計/ 200
12.3.1 分層設計/ 200
12.3.2 擴展設計/ 201
12.3.3 規範設計/ 205
12.3.4 COLAArchetype/ 208
12.4 COLA測試/ 209
12.4.1 單元測試/ 209
12.4.2 集成測試/ 210
12.4.3 ColaMock/ 210
12.5 COLA架構總覽/ 212
12.6 本章小結/ 214
第 13 章 工匠平臺/ 215
13.1 專案背景/ 215
13.2 整理需求/ 216
13.3 工匠Demo/ 217
13.4 使用COLA/ 218
13.4.1 安裝COLA/ 218
13.4.2 搭建應用/ 218
13.5 領域模型/ 219
13.5.1 領域建模/ 219
13.5.2 領域詞彙表/ 221
13.6 核心業務邏輯/ 222
13.7 實現技術細節/ 227
13.7.1 資料存儲/ 227
13.7.2 控制器/ 228
13.8 測試/ 229
13.8.1 單元測試/ 229
13.8.2 集成測試/ 230
13.8.3 回歸測試/ 231
13.9 本章小結/ 232