前言 I<br>谨慎行动 2<br>勒布·罗斯(Seb Rose)<br>函数式编程原则的应用 4<br>爱德华·加森(Edward Garson)<br>试问自己“用户会怎么做?”(你不能算是用户) 6<br>吉尔斯·科尔伯恩(Giles Colborne)<br>编码标准的自动化 8<br>菲利普·冯·莱能(Filip van Laenen)<br>美在于简单 10<br>乔恩·奥尔姆海姆(Jrnlmheim)<br>在你重构之前 12<br>拉吉斯·阿塔帕图(Rajith Attapattu)<br>谨防共享 14<br>伍迪·达汉(Udi Dahan)<br>童子军规则 16<br>罗伯特·C·马丁(鲍伯大叔)(Robert C. Martin (Uncle Bob))<br>在责备别人之前先检查自己的代码 18<br>阿伦·凯利(Allan Kelly)<br>谨慎选择你的工具 20<br>乔瓦尼·阿斯普罗尼(Giovanni Asproni)<br>领域语言里的代码 22<br>丹·诺斯(Dan North)<br>代码就是设计 24<br>瑞恩·布勒西(Ryan Brush)<br>关于代码布局的麻烦事 26<br>史蒂夫·弗里曼(Steve Freeman)<br>代码审查 28<br>马蒂亚斯·卡尔森(Mattias Karlsson)<br>编写代码的理由 30<br>耶切尔·凯姆治(Yechiel Kimchi)<br>对注释的一个注释 32<br>卡尔·埃文斯(Cal Evans)<br>代码说不清,注释来补充 34<br>凯文·亨尼(Kevlin Henney)<br>不断学习 36<br>克林特·谢恩克(Clint Shank)<br>易用不是一种能力 38<br>格雷格·霍普(Gregor Hohpe)<br>早部署,常部署 40<br>史蒂夫·巴克扎克(Steve Berczuk)<br>区分业务异常和技术异常 42<br>丹·贝格·约翰松(Dan Bergh Johnsson)<br>有针对性地勤加练习 44<br>乔恩·贾格尔(Jon Jagger)<br>领域特定语言 46<br>迈克尔·亨格(Michael Hunger)<br>不要怕搞砸 48<br>麦克·里维斯(Mike Lewis)<br>不要在你的测试代码里装可爱 50<br>洛德·贝吉比(Rod Begbie)<br>不要忽略那个错误 52<br>皮特·古德利夫(Pete Goodliffe)<br>不要只学习语言,还要了解它的文化内涵 54<br>安德斯·诺拉斯(Anders Nor?s)<br>不要把程序钉死在老地方 56<br>维里蒂·什托布(Verity Stob)<br>不要指望“魔法会在此发生” 58<br>艾伦·格里菲思(Alan Griffiths)<br>不要重复你自己 60<br>史蒂夫·史密斯(Steve Smith)<br>别碰那些代码! 62<br>卡尔·埃文斯(Cal Evans)<br>封装行为,而不仅仅是状态 64<br>埃纳尔·兰德雷(Einar Landre)<br>浮点数不是真正的数 66<br>查克·阿利森(Chuck Allison)<br>开源助你实现雄心壮志 68<br>理查德·默森-海菲尔(Richard Monson-Haefel)<br>API设计的黄金法则 70<br>迈克尔·费瑟(Michael Feathers)<br>高手神话 72<br>瑞恩·布勒西(Ryan Brush)<br>加班加点,事倍功半 74<br>奥尔夫·莫德尔(Olve Maudal)<br>如何使用bug跟踪器 76<br>马特·多尔(Matt Doar)<br>代码的去芜存菁 78<br>皮特·古德利夫(Pete Goodliffe)<br>安装我吧 80<br>马库斯·巴克(Marcus Baker)<br>进程间通信对应用程序响应时间的影响 82<br>兰迪·斯坦福(Randy Stafford)<br>保持构建的整洁 84<br>约翰内斯·布罗德沃(Johannes Brodwall)<br>知道如何使用命令行工具 86<br>卡罗尔·罗宾逊(Carroll Robinson)<br>通晓两门以上编程语言 88<br>拉塞尔·文德(Russel Winder)<br>了解你的IDE 90<br>亨氏·卡布兹(Heinz Kabutz)<br>了解你的局限性 92<br>格雷格·科尔文(Greg Colvin)<br>知道你下次提交的内容 94<br>丹·贝格·约翰松(Dan Bergh Johnsson)<br>大型、相关联的数据属于数据库 96<br>迪奥米德斯·斯皮内利斯(Diomidis Spinellis)<br>学习外语 98<br>克劳斯·马夸特(Klaus Marquardt)<br>要学会估算 100<br>乔瓦尼·阿斯普罗尼(Giovanni Asproni)<br>学着说“Hello,World” 102<br>托马斯·盖斯特(Thomas Guest)<br>让你的项目能表达它自己 104<br>丹尼尔·林德纳(Daniel Lindner)<br>链接器(Linker)并不神秘 106<br>沃尔特·布莱特(Walter Bright)<br>临时解决方案的寿命 108<br>克劳斯·马夸特(Klaus Marquardt)<br>使接口易于正确使用,难于错误使用 110<br>斯科特·迈尔斯(Scott Meyers)<br>让不可见的更加显眼 112<br>乔恩·贾格尔(Jon Jagger)<br>在并行系统中使用消息传递可获得更好的伸缩性 114<br>拉塞尔·文德(Russel Winder)<br>带给未来的消息 116<br>琳达·瑞辛(Linda Rising)<br>错失采用多态的机会 118<br>柯克·佩珀丁(Kirk Pepperdine)<br>奇闻轶事:测试人员是你的朋友 120<br>比尔克·胡夫纳盖尔(Burk Hufnagel)<br>二进制文件仅此一份 122<br>史蒂夫·弗里曼(Steve Freeman)<br>有代码有真相 124<br>彼得·索默莱德(Peter Sommerlad)<br>拥有(及重构)构建脚本 126<br>史蒂夫·巴克扎克(Steve Berczuk)<br>结对编程,感受流程 128<br>古德妮·霍克尼斯,卡里·罗斯兰,安·卡特林·加耐特(Gudny Hauknes、Kari R?ssland、Ann Katrin Gagnat)<br>特定领域类型胜过原始类型 130<br>埃纳尔·兰德雷(Einar Landre)<br>预防错误 132<br>吉尔斯·科尔伯恩(Giles Colborne)<br>专业程序员 134<br>罗伯特·C·马丁(鲍伯大叔)(Robert C. Martin (Uncle Bob))<br>把一切都置于版本控制之下 136<br>迪奥米德斯·斯皮内利斯(Diomidis Spinellis)<br>放下鼠标,远离键盘 138<br>比尔克·胡夫纳盖尔(Burk Hufnagel)<br>阅读代码 140<br>卡利亚恩·伯格(Karianne Berg)<br>读懂人性 142<br>基斯·布雷斯韦特(Keith Braithwaite)<br>经常重新发明轮子 144<br>贾森·P·塞奇(Jason P. Sage)<br>抗拒单子模式的诱惑 146<br>山姆·沙利斯特(Sam Saariste)<br>通向高性能之路布满了脏代码炸弹 148<br>柯克·佩珀丁(Kirk Pepperdine)<br>简单来自于删减 150<br>保罗·W·荷马(Paul W. Homer)<br>单一职责原则 152<br>罗伯特·C·马丁(鲍伯大叔)(Robert C. Martin (Uncle Bob))<br>从Yes开始 154<br>亚历克斯·米勒(Alex Miller)<br>请转回去做自动化、自动化、自动化 156<br>戴·伊霍斯特曼(Cay Horstmann)<br>充分利用代码分析工具 158<br>萨拉·芒特(Sarah Mount)<br>为必需行为测试,而不是偶发行为 160<br>凯文·亨尼(Kevlin Henney)<br>测试要严密而具体 162<br>凯文·亨尼(Kevlin Henney)<br>在睡觉的时候(或度周末的时候)进行测试 164<br>拉吉斯·阿塔帕图(Rajith Attapattu)<br>软件开发的工程严密性来自测试 166<br>尼尔·福特(Neal Ford)<br>关于状态的思想 168<br>尼克拉斯·尼尔森(Niclas Nilsson)<br>一人计短,二人计长 170<br>阿德里安·威伯尔(Adrian Wible)<br>错上加错就是貌似正确(并且难以纠正) 172<br>阿伦·凯利(Allan Kelly)<br>我写代码为人人,人人为我写代码 174<br>阿斯拉姆·汉(Aslam Khan)<br>Uinx工具是你的好朋友 176<br>迪奥米德斯·斯皮内利斯(Diomidis Spinellis)<br>使用正确的算法和数据结构 178<br>简·克里斯蒂安(JC)·冯·温克尔(Jan Christiaan “JC” van Winkel)<br>冗长的日志会让你睡不安枕 180<br>约翰内斯·布罗德沃(Johannes Brodwall)<br>WET掩盖了性能瓶颈 182<br>柯克·佩珀丁(Kirk Pepperdine)<br>当程序员和测试人员开始合作的时候 184<br>珍妮特·格雷戈里(Janet Gregory)<br>编写代码时要像余生都要给它提供支持一样 186<br>尤里·祖巴列夫(Yuriy Zubarev)<br>使用实例编写小函数 188<br>基斯·布雷斯韦特(Keith Braithwaite)<br>测试为人而写 190<br>杰拉德·梅萨罗斯(Gerard Meszaros)<br>你应该关心你的代码 192<br>皮特·古德利夫(Pete Goodliffe)<br>心口不一的客户 194<br>内特·杰克逊(Nate Jackson)<br>作者简介 196<br>索引 221
展开