软件设计的哲学:第二十一章 结论

结论

这本书讲的是一件事:复杂性。处理复杂性是软件设计中最重要的挑战。它使系统难于构建和维护,并且常常使它们变慢。在这本书中,我试图描述导致复杂性的根本原因,比如依赖性和模糊性。我已经讨论了可以帮助您识别不必要复杂性(如信息泄漏、不必要的错误条件或过于通用的名称)的危险信号。我已经介绍了一些您可以用来创建更简单的软件系统的一般思想,例如努力创建深入而通用的类,定义不存在的错误,以及将接口文档与实现文档分离。最后,我讨论了制作简单设计所需的投资心态。

所有这些建议的缺点是在项目的早期阶段会产生额外的工作。此外,如果您不习惯考虑设计问题,那么在学习良好的设计技术时,您将会更加慢下来。如果对你来说唯一重要的事情是让你当前的代码尽快工作,那么考虑设计就像做苦工一样,会阻碍你实现真正的目标。

另一方面,如果良好的设计是您的一个重要目标,那么这本书中的思想应该会使编程变得更有趣。设计是一个令人着迷的难题:如何用最简单的结构来解决特定的问题?探索不同的方法是很有趣的,发现一个既简单又强大的解决方案是一种很棒的感觉。一个干净、简单、明显的设计是一件美丽的事情。

最重要的软件设计原则

以下是本书中讨论的 最重要的软件设计原则:

  1. 复杂性是递增的:你必须为小事费心(见第11页)。
  2. 工作代码是不够的(见第14页)。
  3. 持续进行小额投资以改进系统设计(见第15页)。
  4. 模块要深度封装(见第22页)
  5. 接口的设计应使最常见的用法尽可能简单(见第27页)。
  6. 对于一个模块来说,拥有一个简单的接口比简单的实现更重要(参见第55、71页)。
  7. 通用模块更要深度封装(见第39页)。
  8. 将通用代码和专用代码分开(见第62页)。
  9. 不同的层应该有不同的抽象(见第45页)。
  10. 降低复杂性(见第55页)。
  11. 定义不存在的错误(和特殊情况)(见第79页)。
  12. 设计两次(见第91页)。
  13. 注释应该描述代码中不明显的内容(参见第101页)。
  14. 软件的设计应该是为了便于阅读,而不是便于书写(见第149页)。
  15. 软件开发的增量应该是抽象的,而不是特性(见第154页)。
posted @ 2020-01-02 09:41  peida  阅读(245)  评论(0编辑  收藏