前言
创作开始时间:2021年7月30日16:21:49
想系统学习一下软件设计(设计模式,架构,重构等等),所以看了几本相关书籍,并在此记录读书笔记。
1、《简约之美:软件设计之道》
- 软件设计不算科学(科学是必须能够分类的)
- 软件设计的目标是提高效率。
- 为什么计算机这么容易出问题?(崩溃、死机等)这一切与复杂性有关。不仅是软件复杂的问题,还是因为计算机本身就是复杂的。
1.1 软件设计的准则
- 不要编写不是必需的代码,并且要删除没有用到的代码。
- 设计程序时,应该根据你现在确切知道的需求,而不是你认为未来会出现的需求
- 仅仅根据目前确知的需求来考虑通用。
渐进式开发和设计可以实现上面三个准则!
顺序化开发,分而治之。
4. 简洁是相对的。
5. 代码保持一致。(如命名都用下划线写法)
6. 可读性。包含:命名,注释。
1.2 小结
2、《软件设计精要与模式》
2.1 软件架构
软件架构的定义:
软件架构包含:
- 程序组织 (封装,抽象,分层,领域模型)
- 数据设计
- 安全性
- 性能
- 可扩展性(如面向对象 OOP)
- 可靠性
- 可用性
2.2 软件设计
软件设计的原则:
极限编程。
2.3 软件设计模式
23种设计模式。
2.4 通用(其他)
- 没有及时的更新文档有时候比没有文档给项目带来的负面影响更大
- 测试驱动开发
- UML
2.5 面向对象
- 核心三要素:封装,继承,多态
- 封装:数据的合理隐藏和公开
- 继承:重用和抽象的基础。极大减少代码冗余。
- 多态:有机地将封装(定义对象类型)、继承(定义不同类型之间的关系)和抽象(提供对象多态的能力)结合起来。
2.6 面向对象设计原则
- 单一职责原则(高内聚,细粒度)
- 开放封闭原则(对扩展开放,对修改封闭)(比如函数的参数是类,而不是基础类型)
- liskov替换原则(继承体系的规则,父类的功能子类都要有,完全遵循。)
- 依赖倒置原则
- 接口隔离原则(使用多个专门的接口)
2.7 封装变化
- 访问者模式,保证可扩展。
- 工厂方法模式
我的理解:以上实际上就是接口的使用,继承的使用。
- 后面还有很多,都看不懂了。先不记录。
2.8 体验重构
- 职责分离
- 引入基类(抽象类,不需要实例化)
- 引入设计模式
2.9 测试驱动开发
TDD
其他
还有很多章,不看了,差不多可以了。
3、《程序员必读之软件架构》
随便过了一下,感觉目前不太需要。
4、《LECTURE NOTES ON Course Code》
看上去还行,先余着。
5、《华为软件编程规范总则》
还是挺有参考价值的。对代码效率,变量、结构等都有相关指导。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删