也可以称为:提高代码质量的方法论

image.png

面向对象设计思想

「编写高质量代码」的全景图 - 图2

设计原则

我的疑问:接口隔离原则和迪米特法则有什么区别?

「编写高质量代码」的全景图 - 图3

「编写高质量代码」的全景图 - 图4

重构技巧

「编写高质量代码」的全景图 - 图5

「编写高质量代码」的全景图 - 图6

「编写高质量代码」的全景图 - 图7

「编写高质量代码」的全景图 - 图8

「编写高质量代码」的全景图 - 图9

编码规范

「编写高质量代码」的全景图 - 图10

「编写高质量代码」的全景图 - 图11

「编写高质量代码」的全景图 - 图12

「编写高质量代码」的全景图 - 图13

设计模式

「编写高质量代码」的全景图 - 图14

创建型 设计模式

创建型模式主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。

  • 单例模式用来创建全局唯一的对象。
  • 工厂模式用来创建类型不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。
  • 建造者模式是用来创建复杂对象,可以通过设置不同的可选参数,“定制化”地创建不同的对象。
  • 原型模式针对创建成本比较大的对象,利用对已有对象进行克隆的方式进行创建,达到节省创建时间的目的。

「编写高质量代码」的全景图 - 图15

「编写高质量代码」的全景图 - 图16

「编写高质量代码」的全景图 - 图17

「编写高质量代码」的全景图 - 图18

「编写高质量代码」的全景图 - 图19

结构型 设计模式

结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题。
基于“组合优于继承”设计思想的结构型设计模式

  • 桥接模式
  • 装饰器模式

「编写高质量代码」的全景图 - 图20

「编写高质量代码」的全景图 - 图21

「编写高质量代码」的全景图 - 图22

「编写高质量代码」的全景图 - 图23

「编写高质量代码」的全景图 - 图24

「编写高质量代码」的全景图 - 图25

「编写高质量代码」的全景图 - 图26

「编写高质量代码」的全景图 - 图27

「编写高质量代码」的全景图 - 图28

行为型 设计模式

编写高质量代码的手段

解决代码重复问题的手段

「编写高质量代码」的全景图 - 图29

保证代码质量的手段

「编写高质量代码」的全景图 - 图30

提高代码可复用性的手段

21 | 理论七:重复的代码就一定违背DRY吗?如何提高代码的复用性?
「编写高质量代码」的全景图 - 图31

解耦实现代码的高内聚松耦合

22 | 理论八:如何用迪米特法则(LOD)实现“高内聚、松耦合”?
30 | 理论四:如何通过封装、抽象、模块化、中间层等解耦代码?
解耦的目的是:实现代码高内聚、松耦合。
解耦有效控制代码的复杂性。
https://www.yuque.com/haofeiyu/design/orgwl7?inner=C77A5

采用分层开发

24 | 实战一(下):如何实现一个遵从设计原则的积分兑换系统?
「编写高质量代码」的全景图 - 图32

如何发现代码质量问题

「编写高质量代码」的全景图 - 图33

函数出错该返回什么

36 | 实战二(上):程序出错该返回啥?NULL、异常、错误码、空对象?
对出错处理的四种方式的说明:

  • 返回错误码:大部分情况下,我们都用异常来处理函数出错的情况,极少会用到错误码。
  • 返回 NULL 值:是返回 NULL 值还是异常对象,要看获取不到数据是正常行为,还是异常行为。
  • 返回空对象:当函数返回的数据是字符串类型或者集合类型的时候,我们可以用空字符串或空集合替代 NULL 值,来表示不存在的情况。这样,我们在使用函数的时候,就可以不用做 NULL 值判断。
  • 抛出异常:
    • 对于代码 bug(比如数组越界)以及不可恢复异常(比如数据库连接失败),倾向于使用非受检异常(运行时异常)。对于可恢复异常、业务异常,比如提现金额大于余额的异常,倾向于使用受检异常(编译时异常),明确告知调用者需要捕获处理。
    • 至于是直接将抛出,还是重新封装成新的异常抛出,要看函数跟异常是否有业务相关性。

「编写高质量代码」的全景图 - 图34