关于代码重构的几点原则

简介:

重构

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

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

 


什么是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,如需转载请自行联系原作者

相关文章
|
6月前
|
人工智能 自然语言处理 搜索推荐
企业如何应用智能客服?(2026年2月最新)
截至2026年,全球智能客服市场加速发展,规模预计超560亿美元。中国78%大型企业已部署大模型客服,多模态交互成新标配。智能客服正从“问答机器人”升级为联动业务系统的“服务中枢”,强调场景驱动、人机协同与活化知识库,成为企业数字化转型的核心引擎。(239字)
|
4月前
|
存储 算法 Java
Java的垃圾回收算法演进:从Serial到ZGC
Java的自动内存管理(垃圾回收,GC)是其区别于C++的重要特性之一。
426 3
|
4月前
|
JSON 安全 Java
Java 服务升级 MCP 服务实战
MCP(Model Context Protocol)是由OpenAI牵头的标准化协议,基于JSON-RPC 2.0,支持stdio/HTTP/WebSocket三种通信模式,旨在安全、高效打通大模型与现有业务系统。其核心价值在于零侵入改造存量服务,一次封装即可跨平台复用,兼顾安全性、可观测性与生态兼容性。
298 1
|
8月前
|
缓存 API UED
Vue3性能调优实战:5个关键技巧让你的应用飞起来!
Vue3性能调优实战分享,涵盖shallowRef、v-memo、异步组件、markRaw、watchEffect等关键优化技巧。
Vue3性能调优实战:5个关键技巧让你的应用飞起来!
|
人工智能 运维 Kubernetes
阿里云容器服务AI助手2.0 - 新一代容器智能运维能力
2024年11月,阿里云容器服务团队进一步深度融合现有运维可观测体系,在场景上覆盖了K8s用户的全生命周期,正式推出升级版AI助手2.0,旨在更好地为用户使用和运维K8S保驾护航。
|
数据可视化 数据挖掘 BI
没办法用Trello?其实有更聪明的替代方案!
在快节奏的工作环境中,Trello作为一款广受好评的项目管理和任务协作工具,凭借其直观的看板界面赢得了全球用户的青睐。然而,由于访问受限、数据安全和本土化资源不足等问题,Trello在国内的实际使用面临诸多挑战。为此,板栗看板(Banli)应运而生,作为一款专为国内市场开发的工具,板栗看板不仅在功能上媲美Trello,还在访问稳定性、自定义选项、智能提醒、数据分析和权限管理等方面进行了优化,特别适合中国团队和企业的实际需求。
791 0
|
编解码 前端开发
浮动布局
【10月更文挑战第27天】浮动布局在实现多列布局和图文混排等方面具有一定的优势,但也存在高度塌陷和定位控制等缺点。通过合理地选择清除浮动的方式,可以有效地解决浮动布局带来的问题,确保页面布局的稳定和正确显示。
|
存储 算法 测试技术
一文带你搞懂二叉树
一文带你搞懂二叉树

热门文章

最新文章