极客时间_软件设计之美 笔记
1.软件设计是什么
-
写代码前应该有模型设计
- 比如mvc结构就是一种模型
-
代码应该有规范,
- 产品内部原则 避免每个开发按自己的想法实现,有人写rest 有人写mvc
- 代码模块原则 某段代码应该放在哪里,比如工具类放到ibase里的哪个模块的哪个包
- 软件设计原则 比如 需要 防腐层 外部接收的json需要转换成内部对象,json解析器直接解析出来的对象有可能有大量附加信息占用内存。
低耦合高内聚
2.分离关注点
- 解决问题的思路 分而治之。
- 分的要足够细,不要把问题混淆
- 分解问题时候不是一个维度,业务维度、性能、异常情况等等。每一个维度是一个关注点
- 动静分离
- 读写分离
- 高频低频分离
- 业务处理和技术实现是两个关注点,不是所有问题都是技术问题,分层封装。
分离的关注点越多越好粒度越小越好。
CQRS
3. 可测试性
- 演化质量
- 可测试性
- 可维护性
- 可扩展性
- ···
- 设计时考虑可测试性
- 不保证钢筋水泥的质量如何保证盖出来的大厦的质量。
- 保证软件质量就要保证模块的质量就要保证每个类每个方法的质量
- 有的类不好测试,说明设计时没有考虑可测试性
- 有些设计模式就没有考虑可测试性,如单例模式。
4. 了解设计
- 从上到下设计
- 先设计模型,这时候不应该含技术细节
- 再根据模型设计接口,这时候不应该包含内部实现,特别对于使用三方工具最好进行包装,便于后续升级改造。
- 最后设计实现
- 对于实现也需要设计
- 一个类的数据结构 就是模型
- 一个类的方法有哪些能力 就是接口
- 方法怎么写用什么技术用什么算法 就是实现
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!