編程匠藝:編寫卓越的代碼

《編程匠藝:編寫卓越的代碼》是2011年電子工業出版社出版的圖書,作者是(美國)古德利弗 (Pete Goodliffe)。

基本信息

內容簡介

《編程匠藝:編寫卓越的代碼》

《編程匠藝:編寫卓越的代碼》主要內容簡介:如果你可以編寫出合格的代碼,但是想更進一步、創作出組織良好而且易於理解的代碼,並希望成為一名真正的編程專家或提高現有的職業技能,那么《編程匠藝:編寫卓越的代碼》都會為你給出答案。《編程匠藝:編寫卓越的代碼》的內容涵蓋編程的各個要素,如代碼風格、變數命名、錯誤處理和安全性等。此外,《編程匠藝:編寫卓越的代碼》還對一些更廣泛的編程問題進行了探討,如有效的團隊合作、開發過程和文檔編寫,等等。《編程匠藝:編寫卓越的代碼》各章的末尾均提供一些思考問題,這些問題回顧了各章中的一些關鍵概念,可以促使你像專家一樣思考,從而使《編程匠藝:編寫卓越的代碼》成為那些渴望作為團隊的一分子,職業並高效地編程的新手們的一本絕佳的參考書。

目錄

第1篇 代碼表面第一部分

第1章 善於防守:健壯代碼的防禦性編程技巧 3

1.1 向優秀的代碼前進 3

1.2 構想:最壞的選擇 4

1.3 什麼是防禦性編程? 6

1.4 又大又壞的世界 8

1.5 防禦性編程技巧 9

1.5.1 使用好的編碼風格和合理的設計 9

1.5.2 不要倉促地編寫代碼 9

1.5.3不要相信任何人10

1.5.4 編碼的目標是清晰,而不是簡潔 11

1.5.5 不要讓任何人做他們不該做的修補工作 11

1.5.6 編譯時打開所有警告開關 12

1.5.7 使用靜態分析工具 13

1.5.8 使用安全的數據結構 13

1.5.9 檢查所有的返回值 14

1.5.10 審慎地處理記憶體(和其他寶貴的資源) 14

1.5.11 在聲明位置初始化所有變數 15

1.5.12 儘可能推遲一些聲明變數 15

1.5.13 使用標準語言工具 15

1.5.14 使用好的診斷信息日誌工具 16

1.5.15 審慎地進行強制轉換16

1.5.16 細則 16

1.6 約束 17

1.6.1 約束的內容 19

1.6.2 移除約束 19

1.7 總結 22

1.8 另請參見 22

1.9 思考 24

1.9.1 深入思考 24

1.9.2 結合自己 24

第2章 精心布局:原始碼的版面和樣式 26

2.1 什麼是關鍵 27

2.2 了解你的讀者 27

2.3 什麼是好的樣式 29

2.4 使用括弧 30

2.4.1 K&R括弧風格 30

2.4.2 懸掛式的括弧風格 31

2.4.3 縮進的括弧風格 32

2.4.4 其他的括弧風格 33

2.5 主宰一切的風格 33

2.6 內部風格(以及在哪裡使用它們) 35

2.7 設立標準 37

2.8 正義的戰爭 39

2.9 總結 40

2.10 另請參見 42

2.11 思考 42

2.11.1 深入思考 42

2.11.2 結合自己 43

第3章 名正言順:為有意義的事物起有意義的名稱 45

3.1 為什麼我們應該恰當地命名呢 47

3.2 我們對什麼進行命名 47

3.3 名字遊戲 48

3.3.1 描述性 48

3.3.2 技術上正確 48

3.3.3 符合語言習慣 49

3.3.4 恰當 49

3.4 具體細節 50

3.4.1 命名變數 51

3.4.2 命名函式 52

3.4.3 命名類型 53

3.4.4 命名名字空間 54

3.4.5 命名宏 55

3.4.6 命名檔案 56

3.5 玫瑰不叫玫瑰 57

3.5.1 保持前後一致 58

3.5.2 利用上下文 58

3.5.3 使用對你有利的名稱 59

3.6 總結 59

3.7 另請參見 61

3.8 思考 62

3.8.1 深入思考 62

3.8.2 結合自己 63

第4章 不言自明:編寫“自文檔化”代碼的技巧 64

4.1 自文檔化的代碼 66

4.2 編寫自文檔化代碼的技術 69

4.2.1 使用好的樣式編寫簡單的代碼 69

4.2.2 選擇有意義的名稱 70

4.2.3 分解為原子函式 70

4.2.4 選擇描述性的類型 71

4.2.5 命名常量 71

4.2.6 強調重要的代碼 72

4.2.7 分組相關信息 72

4.2.8 提供檔案頭 72

4.2.9 恰當地處理錯誤 73

4.2.10 編寫有意義的注釋 73

4.3 實用的自文檔化方法 74

4.3.1 文學性編程 74

4.3.2 文檔化工具 76

4.4 總結 78

4.5 另請參見 79

4.6 思考 79

4.6.1 深入思考 79

4.6.2 結合自己 81

第5章 隨篇注釋:如何編寫代碼注釋 82

5.1 什麼是代碼注釋 83

5.2 注釋看上去是什麼樣的 84

5.3 多少注釋是恰當的 84

5.4 注釋中應該有些什麼 85

5.4.1 解釋為什麼,而不是怎么樣 85

5.4.2 不要描述代碼 86

5.4.3 不要取代代碼 86

5.4.4 確保注釋有用 86

5.4.5 避免分心 88

5.5 實踐 88

5.6 從審美的角度看注釋 89

5.6.1 一致性 89

5.6.2 清晰的塊注釋 90

5.6.3 縮進的注釋 90

5.6.4 行章節附注釋 91

5.6.5 幫助你閱讀代碼 91

5.6.6 選擇一種維護成本較低的風格 92

5.6.7 分隔板 92

5.6.8 標誌 92

5.6.9 檔案頭注釋 93

5.7 使用注釋 94

5.7.1 幫助你編寫例行程式 94

5.7.2 錯誤修正通告 95

5.7.3 注釋過時 95

5.7.4 維護和空洞無物的注釋 96

5.8 總結 97

5.9 另請參見 98

5.10 思考 98

5.10.1 深入思考 98

5.10.2 結合自己 99

第6章 人非聖賢:處理不可避免的情況——代碼中的錯誤情形 100

6.1 從何而來 101

6.2 錯誤報告機制 102

6.2.1 不報告 103

6.2.2 返回值 103

6.2.3 錯誤狀態變數 104

6.2.4 異常 104

6.2.5 信號 106

6.3 檢測錯誤 107

6.4 處理錯誤 108

6.4.1 何時處理錯誤 109

6.4.2 可能的反應 110

6.4.3 代碼示例 112

6.5 使地獄浮現 116

6.6 管理錯誤 118

6.7 總結 119

6.8 另請參見 119

6.9 思考 120

6.9.1 深入思考 120

6.9.2 結合自己 121

第2篇 代碼的神秘生命

第7章 欲善其事,先利其器:使用工具構建軟體 125

7.1 什麼是軟體工具 126

7.2 為什麼要在意工具 128

7.3 使工具發揮作用 129

7.3.1 了解它能做些什麼 130

7.3.2 學習如何駕馭它 130

7.3.3 了解它適合什麼任務 131

7.3.4 檢查它是否可用 131

7.3.5 找到了解更多信息的途徑 131

7.3.6 查明新版本何時出現 132

7.4 哪個工具 132

7.4.1 原始碼編輯工具 133

7.4.2 代碼構建工具 136

7.4.3 調試和調查工具 138

7.4.4 語言支持工具 140

7.4.5 其他工具 141

7.5 總結 142

7.6 另請參見 143

7.7 思考 144

7.7.1 深入思考 144

7.7.2 結合自己 145

第8章測試時代:測試代碼的魔術 146

8.1 反思現實 148

8.2 誰、是什麼、何時以及為什麼 149

8.2.1 我們為什麼要測試 149

8.2.2 誰來進行測試 150

8.2.3 測試的內容有些什麼 150

8.2.4 何時進行測試 151

8.3 測試並不難…… 152

8.4 測試的類型 156

8.5 選擇單元測試用例 160

8.6 為測試而設計 163

8.7 看!不要用手 164

8.8 面對故障該怎么辦 165

8.9 你能管理它嗎 166

8.9.1缺陷跟蹤系統166

8.9.2 bug審查 168

8.10 總結 169

8.11 另請參見 169

8.12 思考 170

8.12.1 深入思考 170

8.12.2 結合自己 171

第9章 尋找缺陷(調試):當事情進展得不順利時該怎么辦 172

9.1 生活的真相 173

9.2 bug的種類 174

9.2.1 從遠處看 174

9.2.2 從近處看 175

9.2.3 從更近處看 178

9.3 消滅害蟲 180

9.3.1 地下之路 181

9.3.2 地上之路 181

9.4 搜尋bug 182

9.4.1 編譯時錯誤 182

9.4.2 運行時錯誤 184

9.5 如何修正缺陷 188

9.6 預防 190

9.7 除蜂劑、驅蟲劑、捕蠅紙 190

9.7.1 調試器 190

9.7.2 記憶體訪問校驗器 191

9.7.3 系統調用跟蹤 191

9.7.4 核心轉儲 191

9.7.5 日誌 191

9.8 總結 192

9.9 另請參見 193

9.10 思考 194

9.10.1 深入思考 194

9.10.2 結合自己 194

第10章 代碼構建:將原始碼轉換為可執行代碼的過程 196

10.1 語言障礙 197

10.1.1解釋型語言198

10.1.2編譯型語言199

10.1.3 位元組編譯型語言 200

10.2 小題大做 201

10.3 構建軟體版本 203

10.4 怎樣才算是一個優秀的構建系統 206

10.4.1 簡潔 206

10.4.2 一致 207

10.4.3 可重複和可靠 207

10.4.4 原子性 208

10.4.5 能夠應付錯誤 209

10.5 技術細節 210

10.5.1 目標的選擇 210

10.5.2 內務處理 212

10.5.3 依賴關係 212

10.5.4 自動構建 213

10.5.5 構建配置 214

10.5.6 遞歸地使用make 215

10.6 請發布我吧 215

10.7 構建大師是全能的嗎 218

10.8 總結 218

10.9 另請參見 219

10.10 思考 219

10.10.1 深入思考 220

10.10.2 結合自己 220

第11章 追求速度:最佳化程式和編寫高效的代碼 222

11.1 最佳化是什麼 223

11.2 是什麼使代碼不盡如人意 224

11.3 為什麼不進行最佳化呢 225

11.4 為什麼要進行最佳化 228

11.5 最佳化的具體細節 229

11.5.1 證明你需要進行最佳化 230

11.5.2 找出運行得最慢的代碼 230

11.5.3 測試代碼 232

11.5.4 最佳化代碼 233

11.5.5 最佳化之後 233

11.6 最佳化的技術 233

11.6.1 設計更改 234

11.6.2 代碼更改 237

11.7 編寫高效的代碼 241

11.8 總結 243

11.9 另請參見 244

11.10 思考 244

11.10.1 深入思考 244

11.10.2 結合自己 245

第12章 不安全感綜合徵:編寫安全的程式 247

12.1 危險 248

12.2 敵人 250

12.3 藉口,都是藉口 252

12.4 感到很脆弱 253

12.4.1 不安全的設計和體系結構 253

12.4.2 緩沖溢出 254

12.4.3 嵌入的查詢字元串 255

12.4.4 競爭狀況 255

12.4.5 整數溢出 256

12.5 防範措施 257

12.5.1 系統安裝技術 258

12.5.2 軟體設計技術 258

12.5.3 代碼實現技術 260

12.5.4 規程技術 261

12.6 總結 261

12.7 另請參見 262

12.8 思考 263

12.8.1 深入思考 263

12.8.2 結合自己 263

第3篇 代碼的形成過程

……

相關詞條

相關搜尋

熱門詞條

聯絡我們