程序员如何做好代码重构?

简介: 代码重构重构就是在不改变软件系统外部行为的前提下,改善它的内部结构。重构不是重写,它们的区别你可以理解为,重构是修复代码,大框架不变。重写是扔掉原来的,重新设计框架。

代码重构重构就是在不改变软件系统外部行为的前提下,改善它的内部结构。重构不是重写,它们的区别你可以理解为,重构是修复代码,大框架不变。重写是扔掉原来的,重新设计框架。

为什么需要重构?

因为代码不是个静态的东西,他会随着时间变得越来越复杂。

什么时候需要重构?

当你发现以下几种情况时,应该重构。

一、代码不符合代码规范。

二、有新的实现方式具有更高的效率。

三、你看完代码后觉得应该重构了。

重构是一种习惯,而不是一个任务。

注意事项

一、重构应该是日常行为,应该在每天的任务里预留一部分时间,即可以用来应对临时需求,也可以用来做重构。

二、不要在重构的代码的时候,添加新的功能。也许你觉得两个正好在一起,就一起做了。那会引发更多问题。

三、在开始重构之前,要先做好测试。既保证重构之前代码可运行的,也能保证出现问题后第一时间发现。

四、小步骤重构:将字段从一个类移动到另一个类,拆分方法,重命名变量。重构通常涉及对许多局部进行的修改,这些局部修改最终会导致更大范围的修改。如果保持小步骤,并在每个步骤之后进行测试,就能避免冗长的调试。

五、重构之前要备份,一旦出现问题或者有其他重要事情,还可以还原。

最简单的重构

一、重命名

好的命名能传达准确的信息,如果你发现命名不能传达准确的信息,那么就修改它。

二、提取重复代码

你以为你已经修复问题了,但后面发现问题还在,就是因为有很多重复代码,导致其他地方调用的方法并没有修改。

三、提炼函数

一个函数过长会显得十分复杂,方法和类都应该遵守单一职责原则。

关于重构的更多信息,同学们可以去读《重构》这本书,书里讲的内容非常系统。

目录
相关文章
|
设计模式 自然语言处理 程序员
普通程序员要成为高级程序员,一定要学会重构
普通程序员要成为高级程序员,一定要学会重构
57 0
|
6月前
|
算法
代码重构:优化之道
代码重构:优化之道
|
6月前
|
算法 程序员
编程遗产:祖传代码
编程遗产:祖传代码
|
设计模式 程序员 开发者
程序员在开发中必经之路:重构代码
众所周知,程序员在开发过程中接手前人代码,或者接手公司外购项目的代码等情况的时候,都有想要重构代码的冲动,与其这样说,不如说程序员只要是接手不是自己亲自写的代码都想重构!俗话说得好:一百个程序员脑中有一百个编程思维,不同程序员就算是开发相同功能的程序,一定会有不同的实现方式,而且代码格式和实现方式也肯定是不一样的,这样就给程序的代码重构留下了伏笔。
162 1
|
设计模式 新零售 供应链
一文教会你如何写复杂业务代码
这两天在看零售通商品域的代码。面对零售通如此复杂的业务场景,如何在架构和代码层面进行应对,是一个新课题。针对该命题,我进行了比较细致的思考和研究。结合实际的业务场景,我沉淀了一套“如何写复杂业务代码”的方法论,在此分享给大家。
28643 1
一文教会你如何写复杂业务代码
|
消息中间件 JavaScript 小程序
用1个月重构了同事写的烂代码,我总结出了15条重写烂代码的经验!
用1个月重构了同事写的烂代码,我总结出了15条重写烂代码的经验!
|
IDE NoSQL Java
我来告诉你代码重构有什么好处
根据两本关于重构的书籍的作者 Martin Fowler的说法 “重构是改变软件系统的过程,它不会改变代码的外部行为,但会改善其内部结构。这是一种清理代码的严格方法,可以最大限度地减少引入错误的机会。本质上,当你重构时,你是在改进编写代码后的设计。”
247 0
|
数据库
高质量代码优化!谈谈重构项目中if-else代码的几点建议
本篇文章探讨了代码的重构以及优化,主要针对代码中大量的条件判断if-else语句问题提出了具体的优化建议。介绍了优化if-else语句的几种有效的方法,包括switch,接口interface以及数据库实现对条件语句进行的优化。
173 0
高质量代码优化!谈谈重构项目中if-else代码的几点建议
|
Cloud Native 算法 前端开发
如何面向对象做好重构?|83行代码
由阿里云云效主办的2021年第3届83行代码挑战赛已经收官。超2万人围观,近4000人参赛,85个团队组团来战。大赛采用游戏闯关玩儿法,融合元宇宙科幻和剧本杀元素,让一众开发者玩得不亦乐乎。本文作者:83行代码优秀参赛选手。
333 0
如何面向对象做好重构?|83行代码
|
供应链 设计模式
一文教会你如何写复杂业务的代码
简单的介绍下业务背景,零售通是给线下小店供货的B2B模式,我们希望通过数字化重构传统供应链渠道,提升供应链效率,为新零售助力。阿里在中间是一个平台角色,提供的是Bsbc中的service的功能。
8326 0