关于代码重构的几点原则

简介:

重构

软件重构是指在不改变软件的功能和外部可见性的情况下,为了改善软件的结构,提高清晰性、可扩展性和可重用性而对软件进行的改造。简而言之,重构就是改进已经写好的软件的设计。

软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极端编程的方法学中,重构需要单元测试来支持。

 


什么是Refactoring?

1.Refactoring是对已经完成的代码进行改进的过程。在不对代码的外部行为进行改动的情况下,对代码内部的结构进行优化。

2.Refactoring是严谨地对完成的代码进行清理的从而减少出错的一种方法。

3.Refactoring的实质是对完成代码的设计进行改进。

4.Refactoring是XP项目中每天的例行练习。

5.Refactoring必须和Test-Driven Design and Development 伴随进行。

 

为什么要Refactoring?

1. 改进软件的设计。

程序员对代码所做的为了满足短期利益代码改动,或再没有完全清楚增个架构下的改动,都很容易是代码失去它的清晰结构,偏离需求或设计。而这些改动的积累很容易使代码偏离它原先设计的初衷而变得不可立即和无法维护。 Refactoring则帮助重新组织代码,重新清晰的体现结构和进一步改进设计。

2. 提高代码质量,可维护性。

容易理解的代码可以很容易的维护和做进一步的开发。即使对写这些代码的程序员本身,容易理解代码也可以帮助容易地做修改。

程序代码也是文档。而代码首先是写给人看的,让后才是给计算机看的。

3. Refactoring帮助尽早的发现错误(Defects)

Refactoring是一个code review和反馈的过程。在另一个时段重新审视自己或别人代码,可以更容易的发现问题和加深对代码的理解。 Refactoring是一个良好的软件开发习惯。

4. Refactoring可以提高提高开发速度

Refactoring对设计和代码的改进,都可以有效的提高开发速度。好的设计和代码质量实体提高开发速度的关键。在一个有缺陷的设计和混乱代码基础上的开发,即使表面上进度较快,但本质是试延后对设计缺陷的发现和对错误的修改,也就是延后了开发风险,最终要在开发的后期付出更多的时间和代价。

 

 

什么时候适合做Refactoring?

1.在开始增加一个新的功能之前

为了增加一个新的功能,程序员需要首先读懂现有的代码。

2.在修复一个错误的时候

为了修复一个Bug,程序员需要读懂现有的代码。

3.在做Code Review的时候

 

 

什么时候不适合做Refactoring?

1.代码太混乱,设计完全错误

与其Refactor,不如重新开始。

2.明天是DeadLine

永远不要做Last-Minute-Change。推迟Refactoring,但不可以忽略,即使进入Production的代码都正确的运行。

3.Refactoring的工作量显著的影响Estimate

一个Task的estimate是3天,如果为了Refactoring,需要更多的时间( 2天或更多)。推迟Refactoring,同步可以忽略。可以把这个Refactoring作为一个新的Task,或者安排在Refactoring的Iteration中完成。

 

Refactoring的流程

1.读懂代码(包括测试例子代码)

2.Refactoring

3.运行所有的Unit Tests



本文转自passover 51CTO博客,原文链接:http://blog.51cto.com/passover/425916,如需转载请自行联系原作者

相关文章
|
文件存储 Android开发 iOS开发
DIY nas 之照片备份工具
Immich是一个开源解决方案,主要用于直接从iPhone、Android手机上备份照片与视频。用户可以将Immich部署到自己的电脑、NAS或服务器中,并通过App进行备份
1250 2
|
8月前
|
人工智能 自然语言处理 搜索推荐
企业如何应用智能客服?(2026年2月最新)
截至2026年,全球智能客服市场加速发展,规模预计超560亿美元。中国78%大型企业已部署大模型客服,多模态交互成新标配。智能客服正从“问答机器人”升级为联动业务系统的“服务中枢”,强调场景驱动、人机协同与活化知识库,成为企业数字化转型的核心引擎。(239字)
|
6月前
|
存储 算法 Java
Java的垃圾回收算法演进:从Serial到ZGC
Java的自动内存管理(垃圾回收,GC)是其区别于C++的重要特性之一。
510 3
|
6月前
|
JSON 安全 Java
Java 服务升级 MCP 服务实战
MCP(Model Context Protocol)是由OpenAI牵头的标准化协议,基于JSON-RPC 2.0,支持stdio/HTTP/WebSocket三种通信模式,旨在安全、高效打通大模型与现有业务系统。其核心价值在于零侵入改造存量服务,一次封装即可跨平台复用,兼顾安全性、可观测性与生态兼容性。
354 1
|
10月前
|
数据采集 API 开发者
1688商品评论API使用指南
本文介绍1688商品评论数据获取方案,基于合规爬虫技术解析商品ID(offerId)对应的买家评论信息,涵盖评论内容、评分、采购详情、多媒体及商家回复等。适用于口碑分析、质量调研等非商用学习场景,遵循平台规则与法律法规,不提供官方API外的公开接口。
|
4月前
|
Java Windows
windows版jdk版本管理工具
JC-jEnv 是 Windows 下轻量级 Java 版本管理工具,支持本地 JDK 管理、远程一键安装(如 `jvms install 21.0.4`)、快速切换(`jvms switch`)及项目级版本隔离,操作简洁,无需手动配环境变量。
558 4
|
10月前
|
缓存 API UED
Vue3性能调优实战:5个关键技巧让你的应用飞起来!
Vue3性能调优实战分享,涵盖shallowRef、v-memo、异步组件、markRaw、watchEffect等关键优化技巧。
Vue3性能调优实战:5个关键技巧让你的应用飞起来!
|
9月前
|
存储 监控 API
API监控工具:淘宝新品上架提醒,抢占首发!
本文介绍如何通过技术手段实现淘宝新品上架自动监控。基于商品状态定时检测,利用API或页面解析判断是否开售,结合邮件、微信等通知方式,第一时间获取提醒。适合抢购热门新品用户,提升抢购效率。(238字)
|
10月前
|
人工智能 自然语言处理 供应链
AI领域必追的「技术+商业」双料导师:极睿科技武彬的硬核知识输出法则
武彬,清华计算机系本硕,极睿科技CEO,深耕AI+电商十余年。兼具技术实力与商业洞察,打造垂直大模型,服务4万+店铺、千家品牌,实现降本90%、GMV倍增。全平台粉丝480万,连续三年蝉联AI博主影响力冠军,以实战案例输出硬核知识,助力商家从内容到转化全面突破,树立“知行合一”行业标杆。(238字)
912 0