匠藝整潔之道:程序員的職業修養 Clean Craftsmanship: Disciplines, Standards, and Ethics

Robert C. Martin 韓磊

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

商品描述

鮑勃大叔因在技術人群中聲名遠播的Clean系列在全球圈粉無數。本書為其燙手新作,旨在為廣大工程師指明一條通向匠師之路,包括飽經洗礪的敏捷技術實踐,如何通過持續的努力提高專業素養,軟件可用之上的目標與技能,以及如何激發團隊最大潛能,等等。本書融會幾本經典著作的精髓,將“整潔”方法論推向至高境界—軟件開發者有責任維護世界正常運行,而“人”才是“技術”的決定者。本書共分三部分,前兩部分用實例闡釋TDD在敏捷軟件中的運用,以及驗收測試、協同編程等常被忽視的敏捷側面與具體策略,還探討了頗有價值的軟件設計方案相關話題;第Ⅲ部分拔地而起,直接提出十條堪稱金玉良言的“規勸”,以幫助程序員成為團隊基石。本書適合所有軟件開發者、測試工程師及工程類院校師生,對技術團隊負責人及架構師同樣大有助益。

目錄大綱

第1章 匠藝 1
第Ⅰ部分 紀律 9
極限編程 11
生命之環 11
測試驅動開發 12
重構 13
簡單設計 14
協同編程 14
驗收測試 15
第2章 測試驅動開發 17
概述 18
軟件 20
TDD三法則 20
第四法則 28
基礎知識 29
簡單示例 30
棧 30
質因數 46
保齡球局 55
小結 72
第3章 高級測試驅動開發 73
排序示例一 74
排序示例二 78
卡殼 86
安排、行動、斷言 94
進入BDD 95
有限狀態機 96
再談BDD 97
測試替身 98
DUMMY 100
STUB 103
SPY 106
MOCK 108
FAKE 111
TDD不確定性原理 113
倫敦派對決芝加哥派 126
確定性問題 126
倫敦派 127
芝加哥派 128
融合 128
架構 129
小結 131
第4章 設計 133
測試數據庫 134
測試GUI 136
GUI輸入 138
測試模式 138
專為測試創建子類 139
自勵 140
HUMBLE OBJECT 140
測試設計 143
脆弱測試問題 143
一一對應 144
打破對應關係 145
VIDEO STORE 147
具體vs通用 166
轉換優先順序 167
{} → NIL(無代碼→空值) 169
NIL → CONSTANT(空值→常量) 169
UNCONDITIONAL → SELECTION(無條件→條件選擇) 171
VALUE → LIST(值→列表) 171
STATEMENT → RECURSION(語句→遞歸) 172
SELECTION → ITERATION(條件選擇→遍歷) 172
VALUE → MUTATED VALUE(值→改變了的值) 173
示例:斐波那契數列 173
變換模式優先順序假設 177
小結 178
第5章 重構 179
什麼是重構 180
基礎工具包 181
重命名 181
方法抽取 182
變量抽取 183
字段抽取 185
魔方 199
紀律 199
測試 199
快速測試 199
打破緊密的一一對應關係 200
持續重構 200
果斷重構 200
讓測試始終能通過 201
留條出路 201
小結 202
第6章 簡單設計 203
YAGNI 206
用測試覆蓋 207
覆蓋 208
漸近目標 210
設計? 210
但還有更多好處 210
充分錶達 211
底層抽象 213
再論測試:問題的後半部分 214
盡量減少重複 214
意外重複 215
尺寸盡量小 216
簡單設計 216
第7章 協同編程 217
第8章 驗收測試 221
紀律 224
持續構建 224
第Ⅱ部分 標準 225
你的新CTO 226
第9章 生產力 227
永不交付S**T 228
成本低廉的變更適應能力 230
時刻準備著 231
穩定的生產力 232
第10章 質量 235
持續改進 236
免於恐懼 237
極致質量 238
我們不把問題留給QA 239
QA之疾 239
QA什麼問題也不會發現 240
測試自動化 241
自動化測試與用戶界面 241
測試用戶界面 243
第11章 勇氣 245
我們彼此補位 246
靠譜的預估 247
你得說不 249
持續努力學習 250
教導 251
第Ⅲ部分 操守 253
個程序員 254
75年 255
書呆子與救世主 259
榜樣和惡棍 261
我們統治世界 262
災難 263
誓言 265
第12章 傷害 267
首先,不造成傷害 268
對社會無害 269
對功能的損害 270
對結構無害 272
柔軟 274
測試 275
好的作品 276
使其正確 277
什麼是好結構 278
艾森豪威爾矩陣 279
程序員是利益相關者 281
盡力而為 282
可重複證據 284
狄克斯特拉 284
正確性證明 285
結構化編程 288
功能分解 290
TDD 290
第13章 集成 293
小周期 294
源代碼控制的歷史 294
GIT 299
短週期 300
持續集成 301
分支與切換 301
持續部署 303
持續構建 304
持續改進 305
測試覆蓋率 306
突變測試 306
語義穩定性 307
清理 307
創造 308
保持高生產力 308
拖慢速度的因素 309
解決注意力分散問題 311
時間管理 314
第14章 團隊合作 317
組團工作 318
開放式/虛擬辦公室 318
誠實和合理地預估 319
謊言 320
誠實、準確、精確 321
故事1:載體 322
故事2:pCCU 324
教訓 325
準確度 325
精確度 327
匯總 329
誠實 330
尊重 332
永不停止學習 332