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

Robert C. Martin

下單後立即進貨 (約4週~6週)

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

相關主題

商品描述

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

作者簡介

作者介绍

Robert C. Martin,软件开发大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report前主编,被后辈程序员尊称为“Bob大叔”。20世纪7 0年代初成为职业程序员,后创办Object Mentor公司并任总裁。Martin还是一名多产的作家,到今已发表数百篇文章、论文和博客文章。除本书外,还著有《代码整洁之道》《敏捷软件开发:原则、模式和实践》《UML:Java程序员指南》等。他创办了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,我的 第 一臺電腦 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