代碼整潔之道 程序員的職業素養 The Clean Coder: A Code of Conduct for Professional Programmers

[美]羅伯特 C. 馬丁(Robert C. Martin)

  • 代碼整潔之道 程序員的職業素養-preview-1
  • 代碼整潔之道 程序員的職業素養-preview-2
代碼整潔之道 程序員的職業素養-preview-1

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

相關主題

商品描述

本書是編程大師“Bob 大叔”40餘年編程生涯的心得體會的總結,講解要成為真正專業的程序員需要具備什麽樣的態度,需要遵循什麽樣的原則,需要採取什麽樣的行動。作者以自己以及身邊的同事走過的彎路、犯過的錯誤為例,意在為後來者引路,助其職業生涯邁上更高臺階。

作者簡介

作者介紹
Robert C. Martin,世界級軟件開發大師,設計模式和敏捷開發先驅,敏捷聯盟首任主席,C++ Report前主編,被後輩程序員尊稱為“Bob大叔”。
20世紀7 0年代初成為職業程序員,後創辦Object Mentor公司並任總裁。
Martin還是一名多產的作家,至今已發表數百篇文章、論文和博客文章。
除本書外,還著有《代碼整潔之道》《敏捷軟件開發:原則、模式和實踐》《UML:Java程序員指南》等。
他ZUI近創辦了cleancoders.com網站,專為軟件開發人員提供教育視頻。


譯者介紹
餘晟,混跡軟件開發和互聯網行業多年,目前在滬江網負責研發和架構管理工作。
業餘喜愛閱讀、思考,關注工程師的全面發展,探索更聰明的技術方案,樂於幫助外界更多理解IT行業的約束、規律和習慣。


章顯洲,螞蟻金服高級項目專家,業餘以技術翻譯作為個人修煉與回饋軟件開發社區的途徑。
自2009年來,翻譯和與人合譯多本技術管理書籍,偶爾也會出現在技術社區聚會上作一些分享。
近年來主要致力於螞蟻金服基礎設施和架構升級方面的項目集管理。
 

目錄大綱

必讀引言1
第1章專業主義7
1.1清楚你要什麼8
1.2擔當責任8
1.3首先,不行損害之事10
1.3.1不要破壞軟件功能10
1.3.2不要破壞結構12
1.4職業道德13
1.4.1瞭解你的領域14
1.4.2堅持學習16
1.4.3練習16
1.4.4合作17
1.4.5輔導17
1.4.6瞭解業務領域17
1.4.7與雇主/客戶保持一致18
1.4.8謙遜18
1.5參考文獻18

第2章說“不” 19
2.1對抗角色21
2.2高風險時刻24
2.3要有團隊精神25
2.3.1試試看26
2.3.2消極對抗28
2.4說“是”的成本30
2.5如何寫出好代碼35

第3章說“是” 37
3.1承諾用語39
3.1.1識別“缺乏承諾”的徵兆40
3.1.2真正的承諾聽起來是怎樣的40
3.1.3總結43
3.2學習如何說“是” 43
3.2.1 “試試”的另一面43
3.2.2堅守原則44
3.3結論46

第4章編碼47
4.1做好準備48
4.1.1凌晨3點寫出的代碼49
4.1.2焦慮時寫下的代碼50
4.2流態區51
4.2.1音樂52
4.2.2中斷53
4.3阻塞53
4.4調試55
4.5保持節奏57
4.5.1知道何時應該離開一會58
4.5.2開車回家路上58
4.5.3洗澡58
4.6進度延遲58
4.6.1期望59
4.6.2盲目衝刺59
4.6.3加班加點60
4.6.4交付失誤60
4.6.5定義“完成” 61
4.7幫助61
4.7.1幫助他人61
4.7.2接受他人的幫助62
4.7.3輔導62
4.8參考文獻63

第5章測試驅動開發65
5.1此事已有定論66
5.2 TDD的三項法則67
5.3 TDD的優勢68
5.3.1確定性68
5.3.2缺陷註入率68
5.3.3勇氣69
5.3.4文檔69
5.3.5設計70
5.3.6專業人士的選擇70
5.4 TDD的局限70
5.5參考文獻71

第6章練習73
6.1引子73
6.1.1 10的22次方74
6.1.2轉變75
6.2編程柔道場76
6.2.1卡塔77
6.2.2瓦薩78
6.2.3自由練習78
6.3自身經驗的拓展79
6.3.1開源79
6.3.2關於練習的職業道德79
6.4結論80
6.5參考文獻80

第7章驗收測試81
7.1需求的溝通81
7.1.1過早精細化83
7.1.2遲來的模糊性83
7.2驗收測試85
7.2.1 “完成”的定義85
7.2.2溝通88
7.2.3自動化88
7.2.4額外工作89
7.2.5驗收測試什麼時候寫,由誰來寫90
7.2.6開發人員的角色90
7.2.7測試的協商與被動推進91
7.2. 8驗收測試和單元測試93
7.2.9圖形界面及其他復雜因素93
7.2.10持續集成94
7.3結論95

第8章測試策略97
8.1 QA應該找不到任何錯誤98
8.1.1 QA也是團隊的一部分98
8.1.2需求規約定義者98
8.1.3特性描述者98
8.2自動化測試金字塔98
8.2.1單元測試99
8.2.2組件測試100
8.2.3集成測試100
8.2.4系統測試101
8.2.5人工探索式測試102
8.3結論102
8.4參考文獻102

第9章時間管理103
9.1會議104
9.1.1拒絕104
9.1.2離席105
9.1.3確定議程與目標105
9.1.4立會106
9.1.5迭代計劃會議106
9.1.6迭代回顧和DEMO展示107
9.1.7爭論/反對107
9.2註意力點數108
9.2.1睡眠108
9.2.2咖啡因108
9.2.3恢復109
9.2 .4肌肉註意力109
9.2.5輸入與輸出109
9.3時間拆分和番茄工作法110
9.4要避免的行為110
9.5死衚衕111
9.6泥潭111
9.7結論112

第10章預估113
10.1什麼是預估115
10.1 .1承諾115
10.1.2預估115
10.1.3暗示性承諾117
10.2 PERT 118
10.3預估任務120
10.4大數定律122
10.5結論123
10.6參考文獻123

第11章壓力125
11.1避免壓力127
11.1.1承諾127
11.1.2保持整潔127
11.1.3危機中的紀律128
11.2應對壓力128
11.2.1不要驚慌失措128
11.2.2溝通129
11.2.3依靠你的紀律原則129
11.2.4尋求幫助129
11.3結論129

第12章協作131
12.1程序員與人133
12.1.1程序員與雇主133
12.1.2程序員與程序員135
12.2小腦137
12.3結論138

第13章團隊與項目139
13.1只是簡單混合嗎139
13.1.1有凝聚力的團隊140
13.1.2如何管理有凝聚力的團隊141
13.1.3項目承包人的困境142
13.2結論142
13.3參考文獻143

第14章輔導、學徒期與技藝145
14.1失敗的學位教育145
14.2輔導146
14.2.1 DIGI-COMP I,我的DIYI台計算機146
14.2.2高中時代的ECP-18 148
14.2.3非常規輔導150
14.2.4艱難的錘煉150
14.3學徒期151
14.3.1軟件學徒期152
14.3.2現實情況154
14.4技藝154
14.5結論155

附錄工具157