导读:经典的设计原则包括SOLID、KISS、YAGNI、DRY、LOD 等。设计原则是前人coding过程中总结的精华,遵从这些原则后,写出来的东西不会太差。带着这么原则去反复思考反复coding,你也可以早点下班或者授人以渔。
首先,SOLID 原则
SOLID 原则并非单纯的 1 个原则,而是由 5 个设计原则组成的,它们分别是:**单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖反转原则。**SOLID依次对应各个原则的英文首字母。
单一职责原则(SRP, Single Responsibility Principle)
它的英文描述是:
A class or module should have a single reponsibility。
一个类或者模块只负责完成一个职责。
开闭原则(OCP,Open Closed Principle)
它的英文描述是:
software entities (modules, classes, functions, etc.) should be open for extension , but closed for modification。软件实体(模块、类、方法等)应该“对扩展开放、对修改关闭”。
里式替换原则(LSP,Liskov Substitution Principle)
它的英文描述是:
Functions that use pointers of references to base classes must be able to use objects of derived classes without knowing it。
子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。
接口隔离原则(ISP,Interface Segregation Principle)
它的英文描述是:
Clients should not be forced to depend upon interfaces that they do not use。
客户端不应该被强迫依赖它不需要的接口。其中的“客户端”,可以理解为接口的调用者或者使用者。
依赖反转原则(DIP,Dependency Inversion Principle)
它的英文描述是:
High-level modules shouldn’t depend on low-level modules. Both modules should depend on abstractions. In addition, abstractions shouldn’t depend on details. Details depend on abstractions.
高层模块(high-level modules)不要依赖低层模块(low-level)。高层模块和低层模块应该通过抽象(abstractions)来互相依赖。除此之外,抽象(abstractions)不要依赖具体实现细节(details),具体实现细节(details)依赖抽象(abstractions)。
KISS 原则
它的英文描述是:
Keep It Simple and Straightforward.
尽量保持简单和直白
代码的可读性和可维护性是衡量代码质量非常重要的两个标准。而 KISS 原则就是保持代码可读和可维护的重要手段。
YAGNI 原则
它的英文描述是:
You Ain’t Gonna Need It。
你不会需要它。
当用在软件开发中的时候,它的意思是:不要去设计当前用不到的功能;不要去编写当前用不到的代码。
实际上,这条原则的核心思想就是:不要做过度设计。
DRY 原则
它的英文描述是:
Don’t Repeat Yourself。
不要重复自己。
将它应用在编程中,可以理解为:不要写重复的代码。三种典型的代码重复情况,它们分别是:实现逻辑重复、功能语义重复和代码执行重复。
迪米特法则
The Least Knowledge Principle。
最小知识原则。
利用这个原则,能够帮我们实现代码的“高内聚、松耦合”。
所谓高内聚,就是指相近的功能应该放到同一个类中,不相近的功能不要放到同一个类中。相近的功能往往会被同时修改,放到同一个类中,修改会比较集中,代码容易维护。
所谓松耦合是说,在代码中,类与类之间的依赖关系简单清晰。即使两个类有依赖关系,一个类的代码改动不会或者很少导致依赖类的代码改动。
总结:
大多数原则在任何场景下是适用的,原则之间也是互通互补的。但不要做过度设计,留点时间找个女朋友不好吗?