zoukankan      html  css  js  c++  java
  • 软件设计的哲学:第二十一章 结论

    结论

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

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

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

    最重要的软件设计原则

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

    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页)。
  • 相关阅读:
    使用twisted.web实现代理服务器
    django signal 浅析
    python 中接口的实现
    浅析django的abstract,proxy, managed
    python-twisted系列(1)
    postgresql 函数demo
    django 1.5+ 权限设计浅析
    django 1.7 新特性 --- data migration
    BZOJ 3670 [Noi2014]动物园 (KMP)
    BZOJ 1029 [JSOI2007]建筑抢修 (贪心 + 优先队列)
  • 原文地址:https://www.cnblogs.com/peida/p/12131589.html
Copyright © 2011-2022 走看看