软件设计需要看书。看书能学习知识。书里有很多人的经验。这些经验很重要。经验能帮助我们少犯错。我们看看常用的书。
有一本书叫《设计模式》。这本书是四个人写的。四个人是埃里希·伽玛、理查德·海尔姆、拉尔夫·约翰逊、约翰·弗利赛德斯。这本书讲了很多模式。模式就是解决常见问题的方法。比如工厂模式。工厂模式用来创建对象。单例模式保证一个类只有一个实例。书里的例子很清晰。程序员可以直接用这些模式。用模式能让代码更好。代码更好读,更好改。这本书是经典。很多程序员都读。
还有一本书叫《重构》。这本书是马丁·福勒写的。重构就是改进代码的结构。不改代码的功能。让代码变得更干净。书里说了很多坏味道。坏味道就是代码不好的地方。比如很长的函数。比如重复的代码。书里给出了方法。方法告诉你怎么改。比如提取方法。把一段代码变成一个小函数。比如重命名变量。让名字更容易懂。这本书很实用。写代码的人应该看。
《人月神话》也是一本重要的书。作者是弗雷德里克·布鲁克斯。这本书讲软件项目管理。管理一个大项目很难。布鲁克斯发现加人不一定快。有时候加人反而更慢。这就是“人月神话”。书中还有很多观点。比如概念完整性。设计要有一个统一的思路。比如第二个系统效应。第二个系统容易设计得太复杂。这本书虽然老,但道理现在还有用。
《代码大全》是一本很厚的书。作者是史蒂夫·麦康奈尔。这本书就像一本字典。它讲了写代码的所有方面。从设计到变量命名。从测试到调试。书里的话很实在。它说写好代码不需要天才。需要的是仔细和纪律。书里有很多具体的建议。比如写函数要先想做什么。比如注释要写为什么,而不是是什么。这本书适合放在手边。经常翻看会有收获。
《敏捷软件开发》也值得看。作者是罗伯特·C·马丁。他讲了敏捷的原则和实践。什么是敏捷?敏捷就是快速适应变化。书里强调要写好代码。即使时间紧,代码也不能乱。他提出了SOLID原则。这是五个设计原则。比如单一职责原则。一个类只做一件事。比如开闭原则。对扩展开放,对修改关闭。遵守这些原则,软件会更灵活。
《程序员修炼之道》是一本小书。作者是安德鲁·亨特和大卫·托马斯。这本书讲的是态度和方法。它说“不要重复你自己”。这就是DRY原则。同样的知识不要在很多地方写。它说“让设计指导,而不是偶然”。要主动设计,不要碰运气。书里还有很多口诀。比如“破窗户理论”。坏掉的代码要尽快修。不然大家都会跟着写坏代码。这本书读起来很快。但想法能记很久。
除了这些书,还有一些重要的思想。比如《UNIX编程艺术》。这本书总结了UNIX系统的哲学。哲学很简单。比如“一个程序只做一件事,并做好”。比如“尽量用文本文件交流”。这些思想影响了很多人。今天的很多工具还是这样做的。
我们设计软件时,还要考虑用户。《点石成金》是一本讲网页设计的书。作者是史蒂夫·克鲁格。核心思想是“别让我思考”。用户用软件应该很自然。不用费力去想。网页要一目了然。这个道理对任何软件都适用。
有些书讲得更深入。《计算机程序的构造和解释》是一本难书。它用了Lisp语言。它不讲具体的技术。它讲编程的本质。什么是计算?什么是抽象?读这本书很花时间。但能让人想得更清楚。
参考文献不光是书。还有网上的文章。比如马丁·福勒的网站。他经常写一些长文章。讲设计上的新想法。比如“持续集成”。比如“领域特定语言”。这些文章很新,也很有用。
论文也是重要的参考。学术会议有很多研究。比如关于软件架构的论文。关于测试方法的论文。这些论文探索新的可能。工程师可以从中找到灵感。
我们看这些资料,不是为了照搬。是为了理解背后的道理。每个项目都不一样。别人的方法不一定完全适合。我们要懂得变通。知道为什么这样做。比知道怎么做更重要。
软件设计是不断学习的。新的技术会出现。新的问题也会出现。好的书和文章能给我们基础。有了基础,我们才能自己判断。才能做出好的设计。
最后,记住要动手。光看书不行。必须自己写代码。自己设计系统。遇到问题,再回去看书。这样理解才会深。书是工具,是朋友。用好它们,路会走得更稳。