设计原则
设计原则是心法,对于构建高质量的软件系统提供指导和约束,它具有以下作用:
- 提高代码质量:设计原则强调代码的清晰性、可读性和可维护性。通过遵循设计原则,可以编写出更结构化、更模块化的代码,减少代码重复和冗余。
- 降低耦合度:设计原则鼓励松散耦合的设计,将系统划分为更小的、相互独立的模块。这样可以减少模块之间的依赖关系,提高系统的灵活性和可扩展性。
- 促进代码重用:设计原则推崇封装、继承、多态等面向对象的特性,使得代码更易于重用。通过设计模式和设计原则,可以将通用的解决方案抽象出来,并在不同的场景中重复应用。
- 简化系统维护:良好的设计原则可以减少系统的耦合和复杂度,使系统更易于理解和维护。当需要对系统进行修改或扩展时,通过遵循设计原则,可以更快速、更安全地进行变更。
- 提高团队协作效率:设计原则提供了一种通用的设计思维和规范,使整个团队在设计和开发过程中能够更好地进行交流和协作。团队成员可以共同理解和遵循设计原则,降低沟通成本,提高开发效率。
SOLID原则
SOLID原则是由罗伯特·C·马丁在21世纪早期引入,指代了面向对象编程和面向对象设计的五个基本原则。遵循SOLID原则可以确保我们设计的代码是易维护、易扩展、易阅读的。SOLID原则同样也适用于Go程序设计。具体SOLID编码原则见下表:
简写 | 全称 | 中文描述 |
---|---|---|
SRP | The Single Responsibility Principle | 单一功能原则 |
OCP | The Open Closed Principle | 开闭原则 |
LSP | The Liskov Substitution Principle | 里氏替换原则 |
DIP | The Dependency Inversion Principle | 依赖倒置原则 |
ISP | The Interface Segregation Principle | 接口分离原则 |
单一功能原则
单一功能原则:一个类或者模块只负责完成一个职责(或者功能)。
简单来说就是保证我们在设计函数、方法时做到功能单一,权责明确,当发生改变时,只有一个改变它的原因。如果函数/方法承担的功能过多,就意味着很多功能会相互耦合,这样当其中一个功能发生改变时,可能会影响其它功能。单一功能原则,可以使代码后期的维护成本更低、改动风险更低。
开闭原则
开闭原则:软件实体应该对扩展开放、对修改关闭。
简单来说就是通过在已有代码基础上扩展代码,而非修改代码的方式来完成新功能的添加。开闭原则,并不是说完全杜绝修改,而是尽可能不修改或者以最小的代码修改代价来完成新功能的添加。
里氏替换原则
里氏替换原则:如果S是T的子类型,则类型T的对象可以替换为类型S的对象,而不会破坏程序。在Go开发中,里氏替换原则可以通过接口来实现。
依赖倒置原则
依赖倒置原则:依赖于抽象而不是一个实例,其本质是要面向接口编程,不要面向实现编程。
接口隔离原则
接口隔离原则:客户端程序不应该依赖它不需要的方法。
DRY原则
DRY: Don't Repeat Yourself,不要重复自己
避免在代码中出现重复的逻辑和代码,可以通过封装来实现重复代码的复用。
KISS原则
KISS: Keep It Simple,Stupid,尽可能简化代码
不要使用过于复杂的算法和设计模式。
YANGI原则
YANGI: You Ain't Gonna Need It,你不会需要它
在编写代码时,不要过度设计,只保持足够的可扩展性,不要编写没有必要的代码。
LOD原则
LOD: Law of Demeter,迪米特法则。或者称为:The Least Knowledge Principle,最小知识原则。
一个对象应该对其它对象有最少的了解。避免在代码中出现过多的依赖关系,可以通过使用接口和依赖注入等方式来实现。