前言
想写出优雅、健壮、易读、维护性好,跟诗一样的代码并不是一件容易的事,但也并不是无路可寻,遵循以下九大原则,多多实践,自然会向着诗一样的方向前进;
SOLID
SOLID并不是一个设计原则,而是五个设计原则的合称;
1.S - 单一职责
Single Responsibility Principle:单一职责原则
一个类、一个模块或者是一个方法的职责应该是单一的;
如果同时承担了两个责任,那么当其中一个需要改变时,极有可能影响另一个;
2.O - 开闭原则
开闭原则,指的是对扩展开放,对修改关闭;
当有新的功能或者需求时,最好是在原有逻辑架构上进行扩展,而尽可能少的影响已经存在的逻辑,也就是尽量不修改现有逻辑;
23种设计模式中大部分都是为了解决特定场景下的扩展问题而存在的;
这应该是架构设计中最重要的原则之一(之一其实可以忽略)
3.L - 里氏替换原则
里氏替换原则,所有父类出现的地方都可以用其子类替换,并且可以保证其行为的正确性;
这就要求子类继承的父类的所有方法都必须遵从父类方法的协议,这里的协议不仅仅是接口参数,包括接口的功能;
4.I - 接口隔离原则
客户端不应该依赖其不需要依赖的接口,比如:客户端仅仅需要一个接口,那么就只给客户端提供一个接口,提供多了反而容易出问题;
举例:客户端仅仅需要用户查询接口,各种原因将用户删除接口也暴露给客户端,显然不合适;
5.D - 依赖反转原则
下层模块不要依赖上层模块。上层模块和下层模块应该通过抽象来互相依赖,而不应该依赖具体细节。,具体实现细节依赖抽象。
KISS原则
6.Keep It Simple and Stupid.
尽量保持代码的简单、易读;
简单易读的代码可维护性更好,另外因为代码简单,因此bug也不易藏身;即便出了bug 查找起来也比较方便
YAGNI
7.不要去开发当前不需要的代码;主要思想是防止过度设计
DRY原则
8.Don’t Repeat Yourself,
尽量减少重复代码;比如某些重复逻辑可以单独提取为函数;
另外,同一个逻辑也尽量避免多余的重复执行,比如在一个链式调用的函数之间的参数校验,可能只需要在其中一个校验即可,不需要每一个都校验;
LOD
迪米特法则,设计时考虑模块之间的耦合性,尽量做到高内聚、低耦合;