中文版序
软件之美
除了我的家庭,软件就是我的挚爱。通过它,我可以创造出美的东西。软件之美,在于它的功能,在于它的内部结构,还在于团队创建它的过程。对用户而言,通过直观、简单的界面呈现出恰当特性的程序,就是美的。对软件设计者而言,简单、直观地分割且内部耦合程度低的结构就是美的。美,存在于所有这些层次之中,它们都是本书要介绍的一部分内容。
软件开发人员如何掌握美的创造呢?在本书中,我讲授了一些原则、模式以及实践,它们可以帮助软件开发人员在追求美的程序、设计和团队的道路上迈出第一步。在书中,我们要探索基本的设计原则、软件设计结构的通用模式以及有助于团队融为一个有机整体的一系列实践。由于本书是关于软件开发的,所以包含了许多代码。仔细研究这些代码是学习本书所阐述的原则、模式以及实践的最有效方法。
人们需要软件,需要许多软件。50年前,软件还只是运行在少量大型而昂贵的机器之上。30年前,软件可以运行在大多数公司和工业环境之中。现在,移动电话、手表、电器、汽车、玩具以及工具中都运行着软件,并且对更新、更好软件的需求永不停止。随着人类文明的发展和壮大,随着发展中国家持续完善基础设施,随着发达国家努力追求更高的效率,需要的软件越来越多。如果所有这些软件中没有美的存在,这将会是一个很大的遗憾。
我们知道,软件可能会是丑的。我们知道,软件可能难用、不可靠并且是粗制滥造的。我们知道,有一些软件系统内部结构混乱而粗糙,改动成本高,难度大。我们还见过使用界面笨拙、难用的软件系统。我们同样见过容易崩溃且行为异常的软件系统。这些系统都是丑陋的。糟糕的是,作为一种职业,软件开发人员所创造出来的美却往往少于丑的。如果你正在阅读这本书,那么你也许就是那个想去创造美而非丑的人。
最优秀的软件开发人员都知道一个秘密:相比丑的东西,美的东西的造价更价,做起来也更便捷。相比丑的系统,构建和维护美的软件系统所花的时间与金钱都要少得多。软件开发新手往往并不理解这一点。他们认为,做每件事情都必须要快。他们认为,美是不实用的。错!错!错!由于做事速度太快,他们所造成的混乱使得软件系统僵化和难以理解。美的系统是灵活的,容易理解的,构建和维护这样的系统更是一种快乐。丑的系统才是不实用的。丑,会降低你的开发速度,让你的软件昂贵而又脆弱。构建和维护美的系统所花的代价最少,交付速度也最快。
我希望你能喜爱这本书。我希望你能像我一样学着以创建美的软件而骄傲,并享受其中的乐趣。如果你从本书中略微感受了这种快乐,如果本书使你开始感受到这种骄傲,如果本书让你开始发自内心地欣赏这种美,我将感到欣慰。