●部分技藝
章命名/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.9SLAP/43
3.10函數式編程/48
3.11本章小結/49
第4章設計原則/51
4.1SOLID概覽/51
4.2SRP/52
4.3OCP/53
4.4LSP/54
4.4.1警惕instanceof/55
4.4.2子類覆蓋父類函數/55
4.5ISP/57
4.6DIP/58
4.7DRY/61
4.8YAGNI/61
4.9RuleofThree/62
4.10KISS原則/62
4.11POLA原則/63
4.12本章小結/63
第5章設計模式/64
5.1模式/64
5.2GoF/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.2UML/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.1C4模型/97
6.6.2UI流程圖/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.3ORM/108
7.4DDD的優勢/109
7.4.1統一語言/110
7.4.2面向對像/110
7.4.3業務語義顯性化/111
7.4.4分離業務邏輯和技術細節/111
7.5DDD的核心概念/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.3K選擇問題/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
0章技術人的素養/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
1章技術Leader的修養/175
11.1技術氛圍/175
11.1.1代碼好壞味道/176
11.1.2技術分享/176
11.1.3CR周報/177
11.1.4讀書會/178
11.2目標管理/179
11.2.1什麼是OKR/179
11.2.2SMART原則/180
11.2.3OKR設定/181
11.3技術規劃/182
11.3.1當前問題/182
11.3.2技術領域/183
11.3.3業務領域/183
11.3.4團隊特色/183
11.4推理階梯/184
11.5Leader和Manager的區別/185
11.6視人為人/186
11.7本章小結/187
第三部分實踐
2章COLA架構/191
12.1軟件架構/191
12.2典型的應用架構/193
12.2.1分層架構/193
12.2.2CQRS/195
12.2.3六邊形架構/196
12.2.4洋蔥架構/198
12.2.5DDD/199
12.3COLA架構設計/200
12.3.1分層設計/200
12.3.2擴展設計/201
12.3.3規範設計/205
12.3.4COLAArchetype/208
12.4COLA測試/209
12.4測試/209
12.4.2集成測試/210
12.4.3ColaMock/210
12.5COLA架構總覽/212
12.6本章小結/214
3章工匠平臺/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測試/229
13.8.2集成測試/230
13.8.3回歸測試/231
13.9本章小結/232
內容簡介
這是一本為專業程序員而寫的書,寫好代碼、追求很好和工匠精神是每個程序員都應該具備的很好品質。
本書共有13章內容,主要分為技藝部分、思想部分和實踐部分。技藝部分詳細介紹了編程技巧和方法論,並配以詳盡的代碼案例,有助於讀者提高編寫代碼的能力,優化代碼質量。思想部分主要包括抽像能力、分治思想,以及程序員應該具備的素養等內容。實踐部分主要介紹了常見的應用架構模式,以及COLA架構的設計原理。