第 22 章 结论
本书只讨论一件事:复杂性。应对复杂性是软件设计中最重要的挑战。复杂性让系统难以构建和维护,也常常使系统运行缓慢。在本书中,我试着说明了导致复杂性的根本原因,例如依赖性和模糊性;讨论了帮助你识别不必要复杂性的危险信号,例如信息泄露、不必要的错误情况或过于笼统的名称;提出了一些创建更简单软件系统的通用思路,例如努力设计深而通用的类、通过定义来规避错误,以及将接口文档与实现文档分开。最后,我讨论了做出简单设计所需的投资思维。
本章概览全书只讨论一件事,是什么?
这些建议的代价是,项目早期需要投入额外的工作。此外,如果你还不习惯思考设计问题,在学习良好设计技巧的过程中,进度会更慢一些。如果你唯一关心的是让当前代码尽快正常工作,那么思考设计就会显得像一件苦差事,似乎妨碍了你实现真正的目标。
另一方面,如果良好设计是你的重要目标,本书中的思想应该会让编程更有趣。设计是一个令人着迷的谜题:如何用尽可能简单的结构解决特定问题?探索不同方法很有趣,找到既简单又强大的解决方案也令人愉快。整洁、简单、易理解的设计本身就是美的。
此外,对良好设计的投入很快就会得到回报。项目开始时精心定义的模块,会在后续反复使用时为你节省时间。六个月前写下的清晰文档,会在你重读代码、添加新功能时节省时间。磨练设计技能所花的时间也会得到回报:随着技能提升和经验积累,你会发现自己能越来越快地做出好的设计。一旦掌握方法,好的设计其实并不比快速而草率的设计多花多少时间。
成为优秀设计师的回报是,你可以把更大比例的时间用在有趣的设计阶段。糟糕的设计师则把大部分时间花在复杂而脆弱的代码中追查缺陷。提高设计技能后,你不仅能更快地开发出更高质量的软件,也能更享受软件开发的过程。