leaf
每次修改都应该足够小,这样可以放心动手,不会让事情更复杂。不过这个过程中最大的危险是,新做的修改有可能会引入更多的复杂性。许多重设计或重写的工作之所以最终失败,就是因为它们引入了更多的复杂性,结果最后和原有系统同样复杂。
leaf
每个步骤都应该足够小,比如给某个变量取个更好的名字,或是给难看懂的代码增加一些注释。更常见的做法是在每个步骤中都把一个复杂的部分拆分成若干个简单的部分。
leaf
如果所有的代码都包含在一个巨大的文件里,改进的第一步就是把某个部分保存到单独的文件里。之后改进这个小部分的设计,然后把另一个部分保存到新的文件,再改进这个部分的设计。如此重复下去,最终得到的就是可靠的、可理解的、可维护的系统。
leaf
如果系统非常复杂,这么做的工作量可能相当大,所以必须有耐心
hide
不过,还有一点也很重要,你不能专门花很长的时间来重新设计,停止开发新功能
hide
平衡开发新功能和应对复杂性这两项任务的方法有很多。最好的一个办法就是,重新设计时只考虑让新功能更容易实现,然后实现这个功能。
leaf
这样,你就可以在重新设计和开发新功能之间定期切换。它同样有助于保证新设计能够适应需求,因为设计时会考虑到实际的应用。
leaf
系统的复杂性也会逐渐下降,而且你一直都跟得上用户的需求。
leaf
你甚至可以这样来处理bug:如果发现修改设计之后,某些bug更容易修复,那么先重新设计代码再修复bug。