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页)。
  • 相关阅读:
    AtCoder Beginner Contest 205
    Codeforces Round #725 (Div. 3)
    Educational Codeforces Round 110 (Rated for Div. 2)【A
    Codeforces Round #722 (Div. 2)
    AtCoder Beginner Contest 203(Sponsored by Panasonic)
    AISing Programming Contest 2021(AtCoder Beginner Contest 202)
    PTA 520 钻石争霸赛 2021
    Educational Codeforces Round 109 (Rated for Div. 2)【ABCD】
    AtCoder Beginner Contest 200 E
    Educational Codeforces Round 108 (Rated for Div. 2)【ABCD】
  • 原文地址:https://www.cnblogs.com/peida/p/12131589.html
Copyright © 2011-2022 走看看