前言 I
謹慎行動 2
勒布•羅斯(Seb Rose)
函數式編程原則的應用 4
愛德華•加森(Edward Garson)
試問自己“用戶會怎麼做?”(你不能算是用戶) 6
吉爾斯•科爾伯恩(Giles Colborne)
編碼標準的自動化 8
菲利普•馮•萊能(Filip van Laenen)
美在於簡單 10
喬恩•奧爾姆海姆(Jørn Ølmheim)
在你重構之前 12
拉吉斯•阿塔帕圖(Rajith Attapattu)
謹防共享 14
伍迪•達漢(Udi Dahan)
童子軍規則 16
羅伯特•C•馬丁(鮑伯大叔)(Robert C. Martin (Uncle Bob))
在責備彆人之前先檢查自己的代碼 18
阿倫•凱利(Allan Kelly)
謹慎選擇你的工具 20
喬瓦尼•阿斯普羅尼(Giovanni Asproni)
領域語言裏的代碼 22
丹•諾斯(Dan North)
代碼就是設計 24
瑞恩•布勒西(Ryan Brush)
關於代碼布局的麻煩事 26
史蒂夫•弗裏曼(Steve Freeman)
代碼審查 28
馬蒂亞斯•卡爾森(Mattias Karlsson)
編寫代碼的理由 30
耶切爾•凱姆治(Yechiel Kimchi)
對注釋的一個注釋 32
卡爾•埃文斯(Cal Evans)
代碼說不清,注釋來補充 34
凱文•亨尼(Kevlin Henney)
不斷學習 36
剋林特•謝恩剋(Clint Shank)
易用不是一種能力 38
格雷格•霍普(Gregor Hohpe)
早部署,常部署 40
史蒂夫•巴剋紮剋(Steve Berczuk)
區分業務異常和技術異常 42
丹•貝格•約翰鬆(Dan Bergh Johnsson)
有針對性地勤加練習 44
喬恩•賈格爾(Jon Jagger)
領域特定語言 46
邁剋爾•亨格(Michael Hunger)
不要怕搞砸 48
麥剋•裏維斯(Mike Lewis)
不要在你的測試代碼裏裝可愛 50
洛德•貝吉比(Rod Begbie)
不要忽略那個錯誤 52
皮特•古德利夫(Pete Goodliffe)
不要隻學習語言,還要瞭解它的文化內涵 54
安德斯•諾拉斯(Anders Norås)
不要把程序釘死在老地方 56
維裏蒂•什托布(Verity Stob)
不要指望“魔法會在此發生” 58
艾倫•格裏菲思(Alan Griffiths)
不要重復你自己 60
史蒂夫•史密斯(Steve Smith)
彆碰那些代碼! 62
卡爾•埃文斯(Cal Evans)
封裝行為,而不僅僅是狀態 64
埃納爾•蘭德雷(Einar Landre)
浮點數不是真正的數 66
查剋•阿利森(Chuck Allison)
開源助你實現雄心壯誌 68
理查德•默森-海菲爾(Richard Monson-Haefel)
API設計的黃金法則 70
邁剋爾•費瑟(Michael Feathers)
高手神話 72
瑞恩•布勒西(Ryan Brush)
加班加點,事倍功半 74
奧爾夫•莫德爾(Olve Maudal)
如何使用bug跟蹤器 76
馬特•多爾(Matt Doar)
代碼的去蕪存菁 78
皮特•古德利夫(Pete Goodliffe)
安裝我吧 80
馬庫斯•巴剋(Marcus Baker)
進程間通信對應用程序響應時間的影響 82
蘭迪•斯坦福(Randy Stafford)
保持構建的整潔 84
約翰內斯•布羅德沃(Johannes Brodwall)
知道如何使用命令行工具 86
卡羅爾•羅賓遜(Carroll Robinson)
通曉兩門以上編程語言 88
拉塞爾•文德(Russel Winder)
瞭解你的IDE 90
亨氏•卡布茲(Heinz Kabutz)
瞭解你的局限性 92
格雷格•科爾文(Greg Colvin)
知道你下次提交的內容 94
丹•貝格•約翰鬆(Dan Bergh Johnsson)
大型、相關聯的數據 屬於數據庫 96
迪奧米德斯•斯皮內利斯(Diomidis Spinellis)
學習外語 98
剋勞斯•馬誇特(Klaus Marquardt)
要學會估算 100
喬瓦尼•阿斯普羅尼(Giovanni Asproni)
學著說“Hello,World” 102
托馬斯•蓋斯特(Thomas Guest)
讓你的項目能錶達它自己 104
丹尼爾•林德納(Daniel Lindner)
鏈接器(Linker)並不神秘 106
沃爾特•布萊特(Walter Bright)
臨時解決方案的壽命 108
剋勞斯•馬誇特(Klaus Marquardt)
使接口易於正確使用,難於錯誤使用 110
斯科特•邁爾斯(Scott Meyers)
讓不可見的更加顯眼 112
喬恩•賈格爾(Jon Jagger)
在並行係統中使用消息傳遞可獲得更好的伸縮性 114
拉塞爾•文德(Russel Winder)
帶給未來的消息 116
琳達•瑞辛(Linda Rising)
錯失采用多態的機會 118
柯剋•佩珀丁(Kirk Pepperdine)
奇聞軼事:測試人員是你的朋友 120
比爾剋•鬍夫納蓋爾(Burk Hufnagel)
二進製文件僅此一份 122
史蒂夫•弗裏曼(Steve Freeman)
有代碼有真相 124
彼得•索默萊德(Peter Sommerlad)
擁有(以及重構)構建腳本 126
史蒂夫•巴剋紮剋(Steve Berczuk)
結對編程,感受流程 128
古德妮•霍剋尼斯,卡裏•羅斯蘭,安•卡特林•加耐特(Gudny Hauknes、Kari Røssland、Ann Katrin Gagnat)
特定領域類型勝過原始類型 130
埃納爾•蘭德雷(Einar Landre)
預防錯誤 132
吉爾斯•科爾伯恩(Giles Colborne)
專業程序員 134
羅伯特•C•馬丁(鮑伯大叔)(Robert C. Martin (Uncle Bob))
把一切都置於版本控製之下 136
迪奧米德斯•斯皮內利斯(Diomidis Spinellis)
放下鼠標,遠離鍵盤 138
比爾剋•鬍夫納蓋爾(Burk Hufnagel)
閱讀代碼 140
卡利亞恩•伯格(Karianne Berg)
讀懂人性 142
基斯•布雷斯韋特(Keith Braithwaite)
經常重新發明輪子 144
賈森•P•塞奇(Jason P. Sage)
抗拒單子模式的誘惑 146
山姆•沙利斯特(Sam Saariste)
通嚮高性能之路布滿瞭髒代碼炸彈 148
柯剋•佩珀丁(Kirk Pepperdine)
簡單來自於刪減 150
保羅•W•荷馬(Paul W. Homer)
單一職責原則 152
羅伯特•C•馬丁(鮑伯大叔)(Robert C. Martin (Uncle Bob))
從Yes開始 154
亞曆剋斯•米勒(Alex Miller)
請轉迴去做自動化、自動化、自動化 156
戴•伊霍斯特曼(Cay Horstmann)
充分利用代碼分析工具 158
薩拉•芒特(Sarah Mount)
為必需行為測試,而不是偶發行為 160
凱文•亨尼(Kevlin Henney)
測試要嚴密而具體 162
凱文•亨尼(Kevlin Henney)
在睡覺的時候(或者度周末的時候)進行測試 164
拉吉斯•阿塔帕圖(Rajith Attapattu)
軟件開發的工程嚴密性來自測試 166
尼爾•福特(Neal Ford)
關於狀態的思想 168
尼剋拉斯•尼爾森(Niclas Nilsson)
一人計短,二人計長 170
阿德裏安•威伯爾(Adrian Wible)
錯上加錯就是貌似正確(並且難以糾正) 172
阿倫•凱利(Allan Kelly)
我寫代碼為人人,人人為我寫代碼 174
阿斯拉姆•漢(Aslam Khan)
Uinx工具是你的好朋友 176
迪奧米德斯•斯皮內利斯(Diomidis Spinellis)
使用正確的算法和數據結構 178
簡•剋裏斯蒂安(JC)•馮•溫剋爾(Jan Christiaan “JC” van Winkel)
冗長的日誌會讓你睡不安枕 180
約翰內斯•布羅德沃(Johannes Brodwall)
WET掩蓋瞭性能瓶頸 182
柯剋•佩珀丁(Kirk Pepperdine)
當程序員和測試人員開始閤作的時候 184
珍妮特•格雷戈裏(Janet Gregory)
編寫代碼時要像餘生都要給它提供支持一樣 186
尤裏•祖巴列夫(Yuriy Zubarev)
使用實例編寫小函數 188
基斯•布雷斯韋特(Keith Braithwaite)
測試為人而寫 190
傑拉德•梅薩羅斯(Gerard Meszaros)
你應該關心你的代碼 192
皮特•古德利夫(Pete Goodliffe)
心口不一的客戶 194
內特•傑剋遜(Nate Jackson)
作者簡介 196
索引 221
· · · · · · (
收起)