设计模式重构代码_面向对象、设计原则、设计模式、编程规范、重构,别傻傻分不清...

面向对象

现在,主流的编程范式或者是编程风格有三种,它们分别是面向过程、面向对象和函数式编

程。面向对象这种编程风格又是这其中最主流的。现在比较流行的编程语言大部分都是面向

对象编程语言。大部分项目也都是基于面向对象编程风格开发的。面向对象编程因为其具有

丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。

  1. 面向对象的四大特性:封装、抽象、继承、多态
  2. 面向对象编程与面向过程编程的区别和联系
  3. 面向对象分析、面向对象设计、面向对象编程
  4. 接口和抽象类的区别以及各自的应用场景
  5. 基于接口而非实现编程的设计思想
  6. 多用组合少用继承的设计思想
  7. 面向过程的贫血模型和面向对象的充血模型

设计原则

18d6df8799094ee6e74a3c3835d35206.png

设计原则是指导我们代码设计的一些经验总结。设计原则这块儿的知识有一个非常大的特

点,那就是这些原则听起来都比较抽象,定义描述都比较模糊,不同的人会有不同的解读。

所以,如果单纯地去记忆定义,对于编程、设计能力的提高,意义并不大。对于每一种设计

原则,我们需要掌握它的设计初衷,能解决哪些编程问题,有哪些应用场景。只有这样,我

们才能在项目中灵活恰当地应用这些原则。

  1. SOLID 原则 -SRP 单一职责原则
  2. SOLID 原则 -OCP 开闭原则
  3. SOLID 原则 -LSP 里式替换原则
  4. SOLID 原则 -ISP 接口隔离原则

设计模式

74284250845c6f263846101305abfaa4.png

设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思

路。大部分设计模式要解决的都是代码的可扩展性问题。设计模式相对于设计原则来说,没

有那么抽象,而且大部分都不难理解,代码实现也并不复杂。这一块的学习难点是了解它们

都能解决哪些问题,掌握典型的应用场景,并且懂得不过度应用。

经典的设计模式有 23 种。随着编程语言的演进,一些设计模式(比如 Singleton)也随之

过时,甚至成了反模式,一些则被内置在编程语言中(比如 Iterator),另外还有一些新的

模式诞生(比如 Monostate)。

它们又可以分为三大类:创建型、结构型、行为型。对于这 23 种设计模式的学习,我们要有侧重点,因为有些模式是比较常用

的,有些模式是很少被用到的。对于常用的设计模式,我们要花多点时间理解掌握。对于不

常用的设计模式,我们只需要稍微了解即可。对设计模式,进行了简单的分类,具体如下所

示。

1. 创建型

常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。

不常用的有:原型模式。

2. 结构型

常用的有:代理模式、桥接模式、装饰者模式、适配器模式。

不常用的有:门面模式、组合模式、享元模式。

3. 行为型

SOLID 原则 -DIP 依赖倒置原则

DRY 原则、KISS 原则、YAGNI 原则、LOD 法则

常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。

不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

编程规范

c4dd098cb4cf1c7ec72e2a69f1986e58.png

编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具

体、更加偏重代码细节。即便你可能对设计原则不熟悉、对设计模式不了解,但你最起码要

掌握基本的编码规范,比如,如何给变量、类、函数命名,如何写代码注释,函数不宜过

长、参数不能过多等等。

对于编码规范,考虑到很多书籍已经讲得很好了(比如《重构》《代码大全》《代码整洁之

道》等)。而且,每条编码规范都非常简单、非常明确,比较偏向于记忆,你只要照着来做

可以。它不像设计原则,需要融入很多个人的理解和思考。

代码重构

afdbb4a1169f564cdce97a3bb7ecf37d.png

在软件开发中,只要软件在不停地迭代,就没有一劳永逸的设计。随着需求的变化,代码的

不停堆砌,原有的设计必定会存在这样那样的问题。针对这些问题,我们就需要进行代码重

构。重构是软件开发中非常重要的一个环节。持续重构是保持代码质量不下降的有效手段,

能有效避免代码腐化到无可救药的地步。

而重构的工具就是我们前面罗列的那些面向对象设计思想、设计原则、设计模式、编码规

范。实际上,设计思想、设计原则、设计模式一个最重要的应用场景就是在重构的时候。我

们前面讲过,虽然使用设计模式可以提高代码的可扩展性,但过度不恰当地使用,也会增加

代码的复杂度,影响代码的可读性。在开发初期,除非特别必须,我们一定不要过度设计,

应用复杂的设计模式。而是当代码出现问题的时候,我们再针对问题,应用原则和模式进行

重构。这样就能有效避免前期的过度设计。我们要掌握一些重构技巧、套路,更重要的是建立持续重构意识,把重构当作开发的一部分,融入到日常的开发中。

五者之间的联系

关于面向对象、设计原则、设计模式、编程规范和代码重构,这五者的关系我们前面稍微提

到了一些,我这里再总结梳理一下。

重构的目的(why)、对象(what)、时机(when)、方法(how);

保证重构不出错的技术手段:单元测试和代码的可测试性;

两种不同规模的重构:大重构(大规模高层次)和小重构(小规模低层次)。

1、面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂

的设计思路,是很多设计原则、设计模式等编码实现的基础。

设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设

计模式,具有指导意义。比如,“开闭原则”是很多设计模式(策略、模板等)的指导

原则。

2、设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设

计思路。应用设计模式的主要目的是提高代码的可扩展性。从抽象程度上来讲,设计原

则比设计模式更抽象。设计模式更加具体、更加可执行。

3、编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加

具体、更加偏重代码细节、更加能落地。持续的小重构依赖的理论基础主要就是编程规

范。

4、重构作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模

式、编码规范这些理论。

实际上,面向对象、设计原则、设计模式、编程规范、代码重构,这五者都是保持或者提高

代码质量的方法论,本质上都是服务于编写高质量代码这一件事的。当我们追本逐源,看清

这个本质之后,很多事情怎么做就清楚了,很多选择怎么选也清楚了。比如,在某个场景

下,该不该用这个设计模式,那就看能不能提高代码的可扩展性;要不要重构,那就看重代

码是否存在可读、可维护问题等。

链接: https://www. toutiao.com/i6853775983 640576516/
出处:今日头条
作者:程序员不就是0和1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值