代码重构有什么意义?为什么重构有用?

article/2025/8/14 20:05:08

点击上方“武培轩”,选择“设为星标”

技术文章第一时间送达!

所谓重构就是在不改变代码外在行为的前提下,对代码进行修改,以改进程序的内部结构。本质上说,重构就是在代码写好之后改进它的设计。

前几个月完成了一个模块的功能重构,之前代码中的“坏味道”很多,例如:重复代码、过长函数和过大的类、魔法数以及各种if-else判断,阅读性极差并且代码效率也不高,因此通过提炼函数、类,用字面常量取代魔法数,用多态取代条件表达式等,采用多线程充分利用CPU资源等方式进行重构,虽然重构绝对不是所谓的“银弹”,不过的确有价值,可以帮助你始终良好地控制代码。

今天来说一下为什么重构有用呢?程序有两种价值:"今天可以为你做什么"和"明天可以为你做什么"。大多数时候,我们都只关注自己今天想要程序做什么。不论是修复 Bug 或是添加特性,我们都是为了让程序更加完善更强大,让它在今天更有价值。

但是系统当下行为,只是整个故事的一部分,如果没有认清这一点,无法长期从事编程工作。如果你为求完成今天任务而不择手段,导致不可能在明天完成明天的任务,那么最终还是会失败。但是,你知道自己今天需要什么,却不一定知道自己明天需要什么。也许你可以猜到明天的需求,也许吧,但肯定还有些事情出乎你的意料。

对于今天的工作,我了解得很充分:对于明天的工作,我了解得不够充分。但如果我纯粹只是为今天工作,明天我将完全无法工作。

重构是一条摆脱束缚的道路。如果你发现昨天的决定已经不适合今天的情况,放心改变这个决定就是,然后你就可以完成今天的工作了。明天回头看今天的理解也许觉得幼稚,那时你还可以改变你的理解。

是什么让程序如此难以修改?主要有以下四个原因:

•难以阅读的程序;•逻辑复杂的程序;•添加新行为时需要修改既有代码者;•带复杂条件逻辑的程序。

因此,我们希望编写的程序是:

1.容易理解;2.所有逻辑都只在唯一地点指定;3.新的改动不会危及现有行为;4.尽可能简单表达条件逻辑。

重构是这样一个过程:它在一个目前可运行的程序上进行,企图在不改变程序行为的情况下赋予上述美好性质,使我们能够继续保持高速开发,从而增加程序的价值。


       

   

●PageHelper分页插件的原理是什么

●数据库分库分表,何时分?怎样分?

●领域驱动设计 (DDD) 的思考


http://chatgpt.dhexx.cn/article/LnMb7gjJ.shtml

相关文章

代码重构之路 --我的2022年总结

2022年是我正式参加工作的第10个年头,也是我在CSDN上写博客的第11个年头。在这10余年的时间里,虽然在工作上遇到了各种情况,但我一直坚持输出、坚持分享,一共在CSDN上发表了530多篇原创博文。在这些文章中,大部分都是与…

java代码重构的思路Java代码重构的几种模式

Java代码重构的几种模式 Java代码的重构模式主要有三种:重命名方法重构模式、引入解释性变量重构模式、以查询取代临时变量重构模式重命名方法重构模式建议执行如下的步骤来完成:1.建立一个具有新名称的方法2.将旧方法的方法体复制进新方法3.讲旧方法的方…

java 代码重构

几天前的一次上线,脑残手抖不小心写了bug,虽然组里的老大没有说什么,但心里面很是难过。同事说我之所以写虫子是因为我讨厌if/else,这个习惯不好。的确,if/else可以帮助我们很方便的写出流程控制代码,简洁明…

代码重构终极指南!!

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇 作者丨Alex Omeyer译者丨弯月出品丨CSDN(ID:CSDNnews)原文链接: https://medium.com/swlh/the-ultimate-engineers-gu…

如何进行代码重构?

作为一个程序员,大部分时候,如果不是一个人承包整个项目,那么有1/3的时间在写代码,1/3的时间在看别人写的代码,剩下的1/3的时间在摸鱼。 那么如何提高摸鱼的时间?看别人写代码十分头疼,分分钟想…

代码重构学习

一、代码重构是什么 用重构手法去重构代码 二、为什么需要代码重构 1.方便维护。为了在修改代码时,添加的地方有个切入点,减少bug。 2.有利于理解设计思想和代码。 三、代码重构怎么做(养成习惯) 思想: 1.修改一…

代码重构技巧:如何将烂代码变成好代码?

这是本文的目录 前言重构入门1. 格式化代码2. 注释3. 废弃的代码4. 变量命名5. 常量命名6. 负值条件的重构7. {} 作为单独的一行8. 变量定义和使用距离太远 重构进阶1. 重复代码2. 函数参数3. 变量多余4. 缺少变量5. 复杂条件 老旧代码的重构利用工具总 结零基础Python学习资源…

代码重构新手教程:如何将烂代码变成好代码?

作者 | 王莉敏 策划 | 蔡芳芳 作为有几年工作经验的程序员,都会对 bad code 不满意。如何将烂代码变成好代码,本文将由浅入深、一步步带你理解重构的奥秘,让你对重构有个基本的了解。本文基于文章《The Simple Ways to…

常见代码重构技巧(非常实用)

你已选中了添加链接的内容点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 8:55 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2020 超神之路,…

hue执行workflow工作流出现直接FAILED

场景: 执行以下任务流的时候就出现了直接失败的情况 在第一次执行并且数据完善的情况下测试的,状态是成功的 但是第二次是在第一次基础上测试的,基础数据有所缺失 日志为: Failing Oozie Launcher, Main class [org.apache.oo…

Git Workflow工作流示意图

来自:http://blog.osteele.com/posts/2008/05/my-git-workflow UPDATE: git pretty 来自: http://justinhileman.info/article/git-pretty/full/ from: http://iccm.cc/git-workflow/

使用Python开源库Couler编写和提交Argo Workflow工作流

Python 是用户在 Kubernetes 上编写机器学习工作流的流行编程语言。 开箱即用时,Argo 并没有为 Python 提供一流的支持。相反,我们提供Java、Golang 和 Python API 客户端[1]。 但这对大多数用户来说还不够。许多用户需要一个抽象层来添加组件和特定于…

SharePoint 2013 Nintex Workflow 工作流帮助(八)

博客地址 http://blog.csdn.net/foxdave 工作流动作 15. Complete Workflow Task(User interaction分组) 此工作流动作将完成任何进行中的任务,它将处理足够的单独任务来达到选择的结果,接下来工作流引擎会依据工作流的设置处理…

工作流(Workflow) -- 实现简单工作流程

工作流(activiti) 工作流简介 业务过程的部分或整体在计算机应用环境下的自动化 工作流就是多个参与者,按照某种预定义的规则,传递业务信息,进行审核的功能一个框架(activiti) 核心 23张表 ACT_RE_*:RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (…

wf工作流java_WF Workflow 状态机工作流 开发

概述 工作流是对业务流程的建模,当我们设计工作流的时候,我们首先要分析业务处理过程中要经历的步骤。然后,我们就可以利用WF创建工作流模型来模拟业务的处理过程。 我们知道,WF包含两种类型的工作流:顺序工作流和状态…

Mendix 9.6 - Workflow(工作流)基础设计

一 概述 Workflow(工作流)是Mendix 9版本中新增的一种可视化语言功能模块,我们可以用它来构建可扩展的流程。此外它还与其他可视化语言完全集成,例如微流编辑器和页面编辑器。 在公司我们往往需要填写许多表单,包括行政、人事、IT等方面的&a…

workflow工作流(三):画流程图工具对比

一、总结 我所用过能画工作流的工具有2个:1.eclipse插件,2.flowable官方网页版,结论是eclipse插件好用,后者要上传下载,还容易丢数据 注意事项:eclipse插件画出来的bpmn文件的schama是activiti&#xff0…

Bladex Workflow工作流引擎开发进阶-版本v1.2.2

Bladex Workflow工作流引擎开发进阶 1 Bladex Workflow简介2 Flowable简介3 workflow部署和配置-参考文档《BladeX插件 - Blade-flow使用帮助文档 》4 配置任务监听4.1 问题:监听类注入不了service 5 配置事件监听6 复杂表单-配置外部表单(不建议配置超大…

workflow工作流(二):34张表

1.常用的表 2.总共34张表 Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。 ACT_RE_*: RE表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则&…

SAP Workflow 工作流开发步骤总结

一、配置 SWU3 设置管理员 二、新建业务对象 查看我们需要增强的业务对象,比如我们项目上用的是BUS2000114,一般我们工作流的触发 是用单据状态的改变来触发,这就需要我们增强业务对象 使用SWO1 新建一个业务对象 继承上面的标准对象 注意…