一文讲透编写高质量代码的八大设计原则(下)

我们在上文中详细讲述了SOLID设计原则,本文接着讲述剩余设计原则。

六、KISS 原则和YAGNI 原则

1、如何理解“KISS 原则”?

KISS 原则其英文翻译有多种,但其核心思想是一致的,即尽量保持简单。

Keep It Simple and Stupid.

Keep It Short and Simple.

Keep It Simple and Straightforward.

代码的可读性和可维护性是衡量代码质量非常重要的两个标准。而 KISS 原则就是保持代码可读和可维护的重要手段。

2、代码行数越少就越“简单”吗?

KISS 原则是保持代码可读和可维护的重要手段。KISS 原则中的“简单”并不是以代码行数来考量的。代码行数越少并不代表代码越简单,我们还要考虑逻辑复杂度、实现难度、代码的可读性等。

3、代码逻辑复杂就违背 KISS 原则吗?

当然不是啦,本身就复杂的问题,用复杂的方法解决,并不违背 KISS 原则。除此之外,同样的代码,在某个业务场景下满足 KISS 原则,换一个应用场景可能就不满足了。

4、如何写出满足 KISS 原则的代码?

  • 不要使用同事可能不懂的技术来实现代码;
  • 不要重复造轮子,要善于使用已经有的工具类库;
  • 不要过度优化。

5、什么是YAGNI 原则?

YAGNI 原则的英文全称是:You Ain’t Gonna Need It。直译就是:你不会需要它。这条原则的核心思想是:不要做过度设计。不要去设计当前用不到的功能;不要去编写当前用不到的代码。

6、YAGNI 跟 KISS 说的是一回事吗?

通过定义我们可以看出二者是有区别的。

KISS 原则讲的是“如何做”的问题(尽量保持简单),而 YAGNI 原则说的是“要不要做”的问题(当前不需要的就不要做)。

七、DRY 原则

1、什么是 DRY 原则?

DRY 原则它的英文描述为:Don’t Repeat Yourself。中文直译为:不要重复自己。将它应用在编程中,可以理解为:不要写重复的代码

2、三种常见代码重复与是否违背DRY原则?

三种常见代码重复的情况:实现逻辑重复、功能语义重复、代码执行重复

  • 实现逻辑重复,但功能语义不重复的代码,并不违反 DRY 原则。
  • 实现逻辑不重复,但功能语义重复的代码,违反 DRY 原则。
  • 代码执行重复,违反 DRY 原则。

3、什么是代码复用性(Code Reusability)

        代码复用性(Code Reusability)、代码复用(Code Resue)和 DRY 原则

代码复用表示一种行为:我们在开发新功能的时候,尽量复用已经存在的代码。

代码的可复用性表示一段代码可被复用的特性或能力:我们在编写代码的时候,让代码尽量可复用。

DRY 原则是一条原则:不要写重复的代码。从定义描述上,它们好像有点类似,但深究起来,三者的区别还是蛮大的。

首先,“不重复”并不代表“可复用”。在一个项目代码中,可能不存在任何重复的代码,但也并不表示里面有可复用的代码,不重复和可复用完全是两个概念。所以,从这个角度来说,DRY 原则跟代码的可复用性讲的是两回事。

其次,“复用”和“可复用性”关注角度不同代码“可复用性”是从代码开发者的角度来讲的,“复用”是从代码使用者的角度来讲的。比如,A 同事编写了一个 UrlUtils 类,代码的“可复用性”很好。B 同事在开发新功能的时候,直接“复用”A 同事编写的 UrlUtils 类。

尽管复用、可复用性、DRY 原则这三者从理解上有所区别,但实际上要达到的目的都是类似的,都是为了减少代码量,提高代码的可读性、可维护性。除此之外,复用已经经过测试的老代码,bug 会比从零重新开发要少。

4、如何提高代码复用性?

  • 减少代码耦合
  • 满足单一职责原则
  • 模块化
  • 业务与非业务逻辑分离
  • 通用代码下沉
  • 继承、多态、抽象、封装
  • 应用模板等设计模式

八、迪米特法则(LOD)

1. 如何理解“高内聚、松耦合”?

“高内聚、松耦合”是一个非常重要的设计思想,能够有效提高代码的可读性和可维护性,缩小功能改动导致的代码改动范围。

“高内聚”用来指导类本身的设计,“松耦合”用来指导类与类之间依赖关系的设计。

所谓高内聚,就是指相近的功能应该放到同一个类中,不相近的功能不要放到同一类中。相近的功能往往会被同时修改,放到同一个类中,修改会比较集中。

所谓松耦合指的是,在代码中,类与类之间的依赖关系简单清晰。即使两个类有依赖关系,一个类的代码改动也不会或者很少导致依赖类的代码改动。

2. 如何理解“迪米特法则”?

迪米特法则的英文翻译是:Law of Demeter,缩写是 LOD。

迪米特法则是一个重要的设计原则,旨在实现代码的“高内聚、松耦合”。

不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。迪米特法则是希望减少类之间的耦合,让类越独立越好。每个类都应该少了解系统的其他部分。一旦发生变化,需要了解这一变化的类就会比较少。

至此,八大设计原则就讲完啦。当然最重要的还是活学活用,在实际项目中,结合实际情况进行抉择选用相关设计原则,来提高代码质量,实现高内聚、低耦合、可复用、高可读性、可测试性的代码编写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值