有些提示和诀窍可应用于软件开发的所有层面,有些想法几乎是公理,有些过程实际上普遍适用。但是,人们几乎没有为这些途径建立这样的文档,你很可能会发现,它们作为零散的段落写在关于设计、项目管理或编码的讨论中。
在这一章里,我们将要把这些想法和过程集中在一起。头两节,“重复的危害”与“正交性”,密切相关。前者提醒你,不要在系统各处对知识进行重复,后者提醒你,不要把任何一项知识分散在多个系统组件中。
随着变化的步伐加快,我们越来越难以让应用跟上变化。在“可撤消性”中,我们将考察有助于使你的项目与其不断变化的环境绝缘的一些技术。
接下来的两节也是相关的。在“曳光弹”中,我们将讨论一种开发方式,能让你同时搜集需求、测试设计、并实现代码。这听起来太好,不可能是真的?的确如此:曳光弹开发并非总是可以应用。“原型与便笺”将告诉你,在曳光弹开发不适用的情况下,怎样使用原型来测试架构、算法、接口以及各种想法。
随着计算机科学慢慢成熟,设计者正在制作越来越高级的语言。尽管能够接受“让它这样”(make it so)指令的编译器还没有发明出来,在“领域语言”中我们给出了一些适度的建议,你可以自行加以实施。
最后,我们都是在一个时间和资源有限的世界上工作。如果你善于估计出事情需要多长时间完成,你就能更好地在两者都很匮乏的情况下生存下去(并让你的老板更高兴)。我们将在“估算”中涵盖这一主题。
在开发过程中牢记这些基本原则,你就将能编写更快、更好、更强健的代码。你甚至可以让这看起来很容易。