代碼精進之路:從碼農到工匠 | 被動收入的投資秘訣 - 2024年7月

代碼精進之路:從碼農到工匠

作者:張建飛
出版社:人民郵電
出版日期:2020年01月01日
ISBN:9787115521026
語言:繁體中文
售價:360元

這是一本為專業程式師而寫的書,寫好代碼、追求卓越和工匠精神是每個程式師都應該具備的優秀品質。
 
本書共有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


相關書籍