总结
这本书都是关于同一件事的:复杂性。处理复杂性是软件设计中最重要的挑战。它使系统难以构建和维护,而且往往也使系统变得缓慢。在本书中,我试图描述导致复杂性的根本原因,如依赖和模糊性。我讨论了可以帮助你识别不必要的复杂性的危险信号,如信息泄露、不需要的错误条件或过于通用的名称。我介绍了一些你可以用来创建更简单的软件系统的一般想法,例如,努力创建深和通用的类,将错误定义为不存在的,以及将接口文档和实现文档分开。最后,我还讨论了产生简单设计所需的投资心态。
所有这些建议的缺点是,它们在项目的早期阶段会产生额外的工作。此外,如果你不习惯于思考设计问题,那么在你学习好的设计技术时,你的速度会更慢。如果对你来说唯一重要的事情是使你目前的代码尽快工作,那么思考设计问题就会显得像苦差事,妨碍了你真正的目标。
另一方面,如果好的设计对你来说是一个重要的目标,那么这本书中的想法应该会使编程变得更加有趣。设计是一个迷人的难题:如何用最简单的结构来解决一个特定的问题?探索不同的方法是很有趣的,而发现一个既简单又强大的解决方案是一种很好的感觉。一个干净、简单、明显的设计是一件美妙的事情。
此外,你在好的设计上的投资会很快得到回报。你在项目开始时精心定义的模块,在你反复使用它们时,将为你节省时间。你在六个月前写的清晰的文档,在你返回到代码中添加新的功能时,将节省你的时间。你花在磨练设计技能上的时间也会得到回报:随着你的技能和经验的增长,你会发现你可以越来越快地做出好的设计。一旦你掌握了方法,好的设计其实并不需要比临时应急的设计多花多少时间。
成为一个好的设计师的回报是,你可以把更多的时间花在设计阶段,这很有趣。差劲的设计者则把大部分时间花在追寻复杂而脆弱的代码中的bug上。如果你提高了你的设计技能,你不仅会更快地生产出更高质量的软件,而且软件开发的过程也会更加愉快。
Last updated