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

張建飛

立即出貨

  • 代碼精進之路 從碼農到工匠-preview-1
  • 代碼精進之路 從碼農到工匠-preview-2
代碼精進之路 從碼農到工匠-preview-1

買這商品的人也買了...

相關主題

商品描述

這是一本為專業程序員而寫的書,寫好代碼、追求卓越和工匠精神是每個程序員都應該具備的優秀品質。

本書共有13章內容,主要分為技藝部分、思想部分和實踐部分。技藝部分詳細介紹了編程技巧和方法論,並配以詳盡的代碼案例,有助於讀者提高編寫代碼的能力,優化代碼質量。思想部分主要包括抽象能力、分治思想,以及程序員應該具備的素養等內容。實踐部分主要介紹了常見的應用架構模式,以及COLA架構的設計原理。

作者簡介

張建飛,阿里巴巴集團高級技術專家,Java全球管理組織(JCP)執行委員會正式會員(Full Member)。2007年計算機工程碩士畢業後,先後在軟件公司InfoSys與互聯網公司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 Rule of Three / 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 COLA Archetype / 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