目錄
Chapter 1: Style / 風格 1
1.1 Names / 名字 3
1.2 Expressions and Statements / 錶達式和語句6
1.3 Consistency and Idioms / 一緻性和習慣用語10
1.4 Function Macros / 函數宏17
1.5 Magic Numbers / 幻數19
1.6 Comments / 注釋23
1.7 Why Bother? / 為何要在風格方麵費心 27
Chapter 2: Algorithms and Data Structures / 算法與數據結構29
2.1 Searching / 檢索30
2.2 Sorting / 排序32
2.3 Libraries / 庫34
2.4 A Java Quicksort / 一個Java快速排序實現37
2.5 O-Notation / 大O記法40
2.6 Growing Arrays / 自增長數組41
2.7 Lists / 錶44
2.8 Trees / 樹50
2.9 Hash Tables / 散列錶55
2.10 Summary / 小結 58
Chapter 3: Design and Implementation / 設計與實現61
3.1 The Markov Chain Algorithm / 馬爾可夫鏈算法62
3.2 Data Structure Alternatives / 在多種數據結構之間選擇64
3.3 Building the Data Structure in C / 使用C語言構建數據結構65
3.4 Generating Output / 生成輸齣69
3.5 Java 71
3.6 C++ 76
3.7 Awk and Perl / Awk和Perl 78
3.8 Performance / 性能80
3.9 Lessons / 經驗教訓82
Chapter 4: Interfaces / 接口85
4.1 Comma-Separated Values / 逗號分隔值86
4.2 A Prototype Library / 一個原型庫87
4.3 A Library for Others / 一個給他人用的庫91
4.4 A C++ Implementation / 一個C++實現99
4.5 Interface Principles / 接口原則103
4.6 Resource Management / 資源管理106
4.7 Abort, Retry, Fail?109
4.8 User Interfaces / 用戶界麵113
Chapter 5: Debugging / 調試117
5.1 Debuggers / 調試器 118
5.2 Good Clues, Easy Bugs / 綫索明顯、易於發現的錯誤119
5.3 No Clues, Hard Bugs / 綫索不明、難以發現的錯誤123
5.4 Last Resorts / 最後的手段127
5.5 Non-reproducible Bugs / 不可重現的錯誤 130
5.6 Debugging Tools / 調試工具131
5.7 Other People's Bugs / 他人引入的錯誤 135
5.8 Summary / 小結136
Chapter 6: Testing / 測試139
6.1 Test as You Write the Code / 一邊編碼,一邊測試140
6.2 Systematic Testing / 係統化測試145
6.3 Test Automation / 測試自動化149
6.4 Test Scaffolds / 測試腳手架151
6.5 Stress Tests / 壓力測試155
6.6 Tips for Testing / 測試心得158
6.7 Who Does the Testing? / 誰來測試 159
6.8 Testing the Markov Program / 馬爾可夫程序的測試160
6.9 Summary / 小結162
Chapter 7: Performance / 性能165
7.1 A Bottleneck / 瓶頸166
7.2 Timing and Profiling / 計時和剖析171
7.3 Strategies for Speed / 加速策略175
7.4 Tuning the Code / 代碼調優178
7.5 Space Efficiency / 空間利用率182
7.6 Estimation / 評估184
7.7 Summary / 小結187
Chapter 8: Portability / 可移植性189
8.1 Language / 語言190
8.2 Headers and Libraries / 頭文件和庫196
8.3 Program Organization / 程序架構198
8.4 Isolation / 隔離202
8.5 Data Exchange / 數據交換203
8.6 Byte Order / 字節序204
8.7 Portability and Upgrade / 可移植性和升級207
8.8 Internationalization / 國際化209
8.9 Summary / 小結212
Chapter 9: Notation / 記法215
9.1 Formatting Data / 數據格式化216
9.2 Regular Expressions / 正則錶達式222
9.3 Programmable Tools / 可編程工具228
9.4 Interpreters, Compilers, and Virtual Machines / 解釋器、編譯器和虛擬機 231
9.5 Programs that Write Programs / 寫程序的程序237
9.6 Using Macros to Generate Code / 用宏生成代碼240
9.7 Compiling on the Fly / 運行中編譯241
Epilogue / 後記247
Appendix: Collected Rules / 規則匯編249
· · · · · · (
收起)