当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 重构--代码重构

重构--代码重构

2020年07月23日  | 移动技术网IT编程  | 我要评论

这一篇旨在让自己认识重构的重要性,在项目开发过程中要培养自己的重构思维。能在项目迭代过程中,让code review成为开发的一部分,以提高自己的代码能力。

 

什么情况下重构?

到底重构什么?

又该如何重构?

 

“重构”这个词对于大部分工程师来说可能不陌生,但真正进行代码重构的人不多,而持续重构作为开发的一部分的人少之又少。这是什么原因呢

1、重构代码对一个工程师能力的要求,要比单纯写代码高的多。重构需要你能洞察出代码存在的坏味道或者设计上的不足,并且能合理、熟练地利用设计思想、原则、模式、编程规范等理论知识解决这些问题。

2、很多工程师对为什么要重构,到底重构什么、什么时候重构,又该如何重构等相关问题理解不深,对重构没有系统性的认识,面对一堆烂代码,没有重构技巧的指导,只能想到哪改到哪,并不能全面地改善代码的质量。

 

重构需要掌握的知识点:

1、对重构概括性的介绍,包括重构的目的(why)、对象(what)、时机(when)、方法(how)。

2、保证不出错的手段,重点是单元测试和代码的可测试性

3、不同规模的重构,大规模高层次的重构(比如系统、模块、代码结构、类与类之间的交互等重构)和小规模低层次重构(类、函数、变量等重构)

 

这一部分内容:重构的目的、对象、时机、方法

 

重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,使其更易理解,修改成本降低。其中的重点“重构不改变外部可见行为”。我们可以理解为,在保持功能不变的情况下,利用设计思想、原则、模式、编程规范等理论来优化代码,修改设计上的不足,提高代码质量。

 

重构的目的:为什么重构(why)

对于项目而言:

1、重构使避免过度设计的重要手段。在维护过程总,真正遇到问题的时候,再对代码遇到问题时再进行重构,能过有效的避免项目前期过度设计,做到有的放矢。

2、优秀的的代码或者架构不是一开始就能完全设计好的。而是不断迭代出来。而重构是在迭代过程中保证代码质量的一个重要的手段,不至于让代码腐化到无可救药的地步。

3、在项目演进过程中如果没有人为代码的质量负责,代码总会往越来越混乱的地方演进。当混乱到一定程度,可能会引起质变,设置维护项目的成本要高于重新开发一套新代码的成本。

对个人而言:

1、重构是我们学习经典设计思想、设计原则、设计模式、编程规范的练兵场,是将这些理论知识进行实践的好机会。能够有效的提高我们的代码能力。

2、所谓“初级工程师在维护代码、高级工程师在设计代码、资深工程师在重构代码”。这句话的意思是说,初级工程师在已有的框架下修改bug,修改添加功能代码;高级工程师从零开始设计代码结构,搭建代码框架;而资深工程师为代码质量负责,需要发觉代码存在的问题,重构代码,时候保证代码处于一个可控状态。

 

重构的对象:到底重构什么(what)

重构可以笼统的分为:大规模高层次的重构(以下简称为“大型重构”)和小规模低层次的重构(以下简称“小型重构”)。

大型重构指的是对顶层代码设计重构,包括:系统、模块、代码结构、类与类之间的关系的重构。重构的手段有:分层、模块化、解耦、抽象可用重复组件等等。这类重构设计到的代码多,范围广,影响和难度都比较大,耗时较长,有可能引入bug。

小型重构指的是对代码细节的重构,主要针对的是类、函数、变量等代码级别的重构,比如命名规范、规范注释、消除超大类或者函数、提取重复代码等等。这类重构修改的地方比较集中,比较简单、可操作性比较强,耗时比较短,引入bug的风险也比较小。只需要掌握各种编程规规范,就可以得心应手。

 

重构的时机:什么时候重构(when)

不要在代码烂到一定程度,在集中重构解决所有问题,这是不现实的,必须有一条可持续、可演进的方式。所以提倡的重构策略是持续重构。就是平时没有事情的时候,看看项目中有哪些地方写的不够好,哪些功能代码不符合规范,是不好的设计,可以主动的去优化代码,主动进行代码重构。把code review作为开发的一部分。

 

重构的方法:又该如何重构(how)

对于大型重构,需要提前做好完善的重构计划,有条不紊的进行。每个阶段完成一小部分代码重构,然后提交、测试、运行,发现没有问题。再继续下一阶段的重构,保证代码一直处于可运行,逻辑正确的状态。每次重构都要控制好重构影响的代码范围,考虑好如何兼容老的代码逻辑,必要的时候还需要写一些兼容性的过度代码,只有这样才能让每个阶段的重构都不至于耗时太长,不至于与新功能相冲突。

大型重构一定是有组织,有计划,并且非常严谨,需要有经验,熟悉业务的资深同事来主导。

对于低层次的重构,影响范围小,只要愿意随时可以做。

 

参考:设计模式之美--王争

本文地址:https://blog.csdn.net/erge353729094/article/details/107501793

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网