3.2 战略性编程
Last updated
Last updated
成为一名优秀的软件设计师的第一步就是要意识到,光让代码工作起来是不够的。为了更快地完成当前的任务而引入不必要的复杂性是不能接受的。最重要的是系统的长期结构。任何系统中的大部分代码都是通过扩展现有的代码库来编写的,所以作为一个开发者,你最重要的工作就是为这些未来的扩展提供便利。因此,你不应该把“可以工作的代码”作为你的主要目标,尽管你的代码当然必须可以工作。你的首要目标必须是作出一个出色的设计,而这个设计恰好也能工作。这就是战略性编程。
战略性编程需要一种投资心态。你必须投资时间来改进系统的设计,而不是采取最快的方式来完成你当前的项目。如图3.1所示,这些投资在短期内会拖慢你的速度,但从长期来看,它们会加快你的速度。
有些投资将是主动的。例如,值得花一点额外的时间为每个新的类找到一个简单的设计;与其实施第一个想到的想法,不如尝试几个备选的设计,然后挑选一个最简洁的。试着想象一下系统在未来可能需要改变的几种方式,并确保你的设计会很简单。编写良好的文档是另一个主动投资的例子。
其他的投资将是被动的。无论你在前期投入多少,在你的设计决策中都不可避免地会有错误。随着时间的推移,这些错误会变得很明显。当你发现一个设计问题时,不要只是忽略它或在它周围打补丁;要花一点额外的时间来解决它。如果你战略性地进行编程,你将不断地对系统设计进行小的改进。这与战术性编程恰恰相反,在战术性编程中,你会不断地增加一些小的复杂性,从而导致未来的问题。