首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

何时应该重构代码?如何重构代码

日常工作中,相信大家都见过一些看见就想骂人代码,那么今天呢,我们就来聊聊何时应该重构代码,以及如何重构代码。...重构不止是代码整理,它提供了一种高效且受控代码整理技术 2.为何重构 改进软件设计:如果没有重构,程序设计会逐渐变质,重构很像是在整理代码,你所做就是让所有的东西回到应处位置上。...二.代码坏味道 1.重复代码 如果你在一个以上地点看到相同程序结构,那么可以肯定:设法将它们合二为一,程序会变得更好 。...同一个类中有相同表达式:提炼出重复代码,然后让两个地方都调用被提炼出来那一段代码; 两个互为兄弟子类内含有相同表达式:提炼出相同代码,将它推入超类内; 两个毫不相干类中出现:将重复代码提炼到一个独立类中...3.合并重复条件代码 在表达式每个分支上都执行了相同一段代码。将这段重复代码搬移到条件表达式之外。 4.移除控制标记 在一系列布尔表达式中,某个变量带有”控制标记”作用。

1.7K30
您找到你想要的搜索结果了吗?
是的
没有找到

代码重构(六):代码重构完整案例

今天示例借鉴于《重构,改善既有代码设计》这本书中第一章示例,在其基础上做了一些修改。今天博客从头到尾就是一个完整重构过程。...首先会给出需要重构代码,然后对其进行分析,然后对症下药,使用之前我们分享重构规则对其进行一步步重构。...今天博客会给出原始代码,也是需要进行重构代码。当然原始代码完全符合需求,并且可以正确执行。废话少说,先看示例吧。 一、需要重构代码 在本篇博客第一部分,我们先给出完成上述需求需要重构代码。...因为在每次重构之前,我们修改代码内部结构,而代码模块对外调用方式不会变。所以我们所创建测试用例可以帮助验证我们重构程序是否可以正常工作,是否重构后还符合我们需求。...但是这样的话,其中好多临时变量也需要被复制一份,这是完全相同,这样就容易产生重复代码

1.8K70

代码重构

最近在对手头项目进行重构,以下是这个过程中一些思考。 1.项目为什么要重构?...1.2代码无法维护 问题: review代码时,发现很多类似下面的问题: 1.一条sql语句100多行,在sql语句中处理业务; 2.2个饼图2个折线图数据用一个接口返回,另外一个页面只需要其中2个图数据...; 6.大段大段代码被注释,一年前注释掉代码还在; 在接手项目的时候,看到这些代码,内心简直是fuck,在后期数据量不断增大,用户量不断增加,出现问题候,我们来维护这些代码时,充满无力感,一条sql...解决方法: 重构这种代码,是最痛苦事情了。...; 2.sql语句好好写,你装x对公司和团队是一种灾难,fuck; 3.写接口思考一下,低耦合啊,方法功能单一一些,这样其他地方或者其他人可以复用啊; 4.没用垃圾你给删掉啊,别人不敢删你代码,以为你代码哪天有用

52930

代码重构艺术

原文出自:https://juejin.cn/post/6903054491273625614 什么是重构 所谓重构是这样一个过程:在不改变代码外在行为前提下,对源代码做出修改,以改进程序内部结构...本质上来说重构就是在代码写好之后改进它设计。 重构目的是什么 首先,重构是时刻保证代码质量一个极其有效手段,不至于让代码腐化到无可救药地步。项目在演进,代码不停地在堆砌。...这段代码可能是别人写,也可能时自己写,但无论如何,当你觉得这段代码逻辑糟糕,需要花费几分钟才能明白其中含义时,你就要想着如何去重构才可以使代码更加简洁直观 有计划代码重构 「找寻重构和开发进度中适合自己平衡点...何时不应该重构 「有所为,有所不为。」 并非所有的糟糕代码都需要重构,如果你不需要使用到这段代码,那么就不必花心思去重构它。只有你需要理解其中工作原理时,对其重构才有价值。...当然如果重写比重构更容易,那么就不需要重构了。 如何保证重构后程序正确性 保证代码正确性最好方法就是进行「单元测试(Unit Testing)」 。

78320

重构代码Tricks

重构代码就是依赖于设计模式而实现一个必要手段,可以说设计模式就是重构代码目标,但他手段却不仅仅只有设计模式这些大而全,同样存在小而精,我们随处可以使用。...block":"none"; } 提取公因式 这里主要针对于,多次重复调用同一个封装代码块函数。...我们可以使用命令模式进行重构。 这就涉及到另外一个tip. 将分支转化为函数 上面代码里面的分支完全可以使用函数来进行代替。...这就是通过命令模式,来重构代码,完成性能和阅读优化。 但有时候,使用分支,会比这样更简洁,那当然可以使用分支啦。 而使用分支还要主意一个tip就是....链式调用 这个应该算是比较高级用法。使用过jQuery同学应该印象最深刻。

1.2K10

重构-改善既有代码设计:大型重构

大型重构 1. Tease apart Inheritance 梳理并分解继承体系 某个继承体系同时承担两项责任 ,建立两个继承体系,并通过委托关系让其中一个可以调用另一个 . 2....Convert Procedural design to Objects 将过程化设计转化为对象设计 你手上有一些传统过程佛冈可选择代码 , 将数据记录变成对象,将大块行为分成小块,并将行为移入相关对象之中...Separate Domain from from Presention 将领域和表述/显示分离 某些GUI类之中饮食了领域逻辑 , 将领域逻辑分离出来,为它们建立独立领域类 4....Extract Hierarchy 提炼继承体系 你有某个类做了太多工作,其中一部分工作是以大量条件表达式完成 , 建立继承体系,以一个子类表示一种特殊情况

39610

.NET重构—单元测试代码重构

阅读目录: 1.开篇介绍 2.单元测试、测试用例代码重复问题(大量使用重复Mock对象及测试数据) 2.1.单元测试继承体系(利用超类来减少Mock对象使用) 2.1.1.公用MOCK对象;...,重构能有今天风光影响力完全少不了单元测试功劳;最近一段时间写单元测试用例时间远超过我写逻辑代码时间和多代码量,这是为什么?...,那么一旦被测试代码发生一点点变化都会很大程度上影响测试代码,毕竟测试代码都是步步依赖; 那么我们应该最大程度限制由于被测试代码变动而引起测试代码变动,这个时候我们应该将重构应用到测试代码中...; 2.1】单元测试继承体系(利用超类来减少Mock对象使用) 将多个相关测试用例代码通过超类方式关联起来统一管理将大大减少重复代码构建;就跟我们重构普通代码一样,将多个类之间共享逻辑代码或者对象提取出来放到基类中...,如果这个时候我们需要每次都在用例中对三个接口都进行类似的重复代码也算是一种地效率重复劳动,并且在后面的改动中会很费事;所以这个时候抽象出来基类就派上用场了,我们可以将构建接口逻辑代码放入基类中进行统一构造

1.2K60

代码重构(三):数据重构规则

在《代码重构(一):函数重构规则(Swift版)》和《代码重构(二):类重构规则(Swift版)》中详细介绍了函数与类重构规则。...如果你业务逻辑非常复杂,那么对数据进行合理处理是很有必要。对数据组织形式以及操作进行重构,提高了代码可维护性以及可扩展性。 与函数重构与类重构类似,对数据结构重构也是有一定规则。...通过这些规则可以使你更好组织数据,让你应用程序更为健壮。在本篇博客中将会结合着Swift代码实现小实例来分析一下数据重构规则,并讨论一下何时使用那些重构规则进行数据重构。...3.从根本上进行重构 上面代码修改不能称为代码重构,因为其改变是不仅仅是模块内部结构,而且修改了模块调用方式。...这时候我们就可以使用“以字段取代子类”方式来进行重构,下方截图就是重构代码片段。

1.1K60

代码重构(一):函数重构规则

重构是项目做到一定程度后必然要做事情。代码重构,可以改善既有的代码设计,增强既有工程可扩充、可维护性。随着项目需求不断迭代,需求不断更新,我们在项目中所写代码也在时时刻刻在变化之中。...重构,在《重构,改善既有代码设计》这本经典书中给出了定义,大概就是:在不改变代码对外表现情况下,修改代码内部特征。说白了,就是我们测试用例不变,然后我们对既有的代码结构进行修改。...并且当你实现类似功能时候就容易产生重复代码。写代码时,最忌讳就是代码重复。这也就是经常所说DRY(Don`t Repeat Yourself)原则。...这样一来在实现类似功能函数时,这些复杂临时变量就可以进行复用,从而减少代码重复率。...下方第一个函数是重构,可以看出temp被重复赋值了两次值,如果这两个值关系不大,而且temp不足以对两个值意思进行说明。那么就说明该段代码就应该被重构了。

1.5K50

代码重构(二):类重构规则

关于上述这些函数重构规则更为详细信息请参考上一篇博客,在此就不做过多赘述了。 今天这篇博客主要介绍一下类重构。在我们写代码时,有些类是不规范,需要重构。...下方代码段是使用Move Method重构结果。 ?...关于这两个函数重构规则具体细节请参见《代码重构(一):函数重构规则(Swift版)》中介绍。下方截图是对BookCustomer类中charge()函数进行重构结果,如下所示: ?...当然,对类细化也是为了减少代码重复性,以及提高代码复用性,便于代码维护。下方将会通过一个实例,对类进行提炼。 1.重构代码 下方是我们将要进行重构代码段。...这样一来TelePhoneNubmer类就可以重复利用了,而且层次结构更为清晰。下方代码段就是对上述代码进行重构结果。具体如下所示: ?

1.3K100

代码重构(三):数据重构规则

在《代码重构(一):函数重构规则(Swift版)》和《代码重构(二):类重构规则(Swift版)》中详细介绍了函数与类重构规则。...如果你业务逻辑非常复杂,那么对数据进行合理处理是很有必要。对数据组织形式以及操作进行重构,提高了代码可维护性以及可扩展性。 与函数重构与类重构类似,对数据结构重构也是有一定规则。...通过这些规则可以使你更好组织数据,让你应用程序更为健壮。在本篇博客中将会结合着Swift代码实现小实例来分析一下数据重构规则,并讨论一下何时使用那些重构规则进行数据重构。...3.从根本上进行重构 上面代码修改不能称为代码重构,因为其改变是不仅仅是模块内部结构,而且修改了模块调用方式。...这时候我们就可以使用“以字段取代子类”方式来进行重构,下方截图就是重构代码片段。

94210

代码重构:函数重构 7 个小技巧

重构范围很大,有包括类结构、变量、函数、对象关系,还有单元测试体系构建等等。但在这一章,我们主要分享重构函数 7 个小技巧。...在重构世界里,几乎所有的问题都源于过长函数导致,因为: 过长函数包含太多信息,承担太多职责,无法或者很难复用 错综复杂逻辑,导致没人愿意去阅读代码,理解作者意图 对于过长函数处理方式,在..."; } if (peole[i].equals("Phoenix")) { return "Phoenix"; } // 弊端:如果加入新人,又要写很多重复逻辑和代码...现在我们变牛逼 了,对于曾经糟糕代码肯定不能不闻不问,所以重构就是,在不更改输入和输出情况下,给他替换一种更优雅实现,代码如下: String foundPerson(String[] people...,如果你有更好实现方案(保证输入输出相同前提下),就应该直接替换掉它 记得通过单元测试后,再提交代码(不想被人打的话) 参考文献: 《重构:Refactoring: Improving the Design

53130

代码重构:类重构 8 个小技巧

就要运用一些重构技巧,来让代码结构保持整洁,从而让后续需求扩展更加稳定 1:合理分配函数 说明:从 OOP 角度来考虑,如果函数之间频繁调用,显然适合放在一个对象当中 使用场景:在 A 对象内..._interestRate 字段 AccountType 可以根据不同类型,设置不同 _interestRate 利率,代码更灵活 总结 不管是搬迁函数,还是搬迁字段也好,它们都是在不断重构职责和属性...,原来设计对象承担职责也会不断增多(方法,属性等……),如果不加以使用重构手段来控制对象边界(职责,功能),那么代码最终就会变得过于复杂,难以阅读和理解,最终演化成技术债,代码腐烂,从而导致项目最终失败...省略 get/set 代码... } 这时候 Person 对象职责就简单和清晰很多了,对象结构如下: TelePhoneNumber 对接结构图如下: 总结 拆解大类,是常见重构技术手段...,建议使用 增强工具类 方式重构显然更加合适

69620

趣图 | 代码重构前vs代码重构

前言 今天跟大家聊一下关于代码重构的话题。 话说,很多程序员对自己写代码平时很随心所欲(各种魔法变量,一个方法几十上百行代码,还有各种让人崩溃变量或方法命名)。...当有一天让他维护他人代码,他就会抓狂,很容易激发他体内重构瘾。...(大多数程序员审阅完别人代码后,先会忍不住吐槽一番,然后会忍不住想重构一把,) 在我看来,重构本身是一件值得肯定事,但有个前提,一定不能影响原先业务功能!...重构三技巧 x 一、结构化你代码 大家看下下面截图assembleOffer这个方法,一个方法内部有很多段代码,比如1.核心商品信息代码片段,2.产品属性信息片段等等。...x 三、对修改关闭,对新增开放 大家如果在重构时候,面对被修改代码,其多个地方引用,这个时候一定要小心了,很有可能你改了某一处,但影响了其他功能代码

7410

代码重构之道

代码重构永远是程序员们无法回避的话题,当你软件在编写那一刻起,重构就不可避免。...重构之道 自动化测试 重构代码最最最重要一个先验条件是:自动化测试。子在川上曰: 一切没有自动化测试代码重构都是耍流氓。 写代码目的是什么?是为了产出系统能够满足功能需求。...如果重构了十行代码,却需要花费一个小时进行运行一次单元测试,那么你要么不会去重构代码,要么你重构了不会去测试。 好重构发生在构建系统每时每刻,而非问题发生或者老板要求。...时时刻刻重构 前面已经提到了重构代码最佳时间点:撰写每行代码时候,而非火烧屁股时候。那什么样情况你需要进行重构呢?...如果说上面所述是纯粹代码重构,那么这里就是用户体验重构。程序员代码是什么?是一个程序员为另一个程序员精心打造产品!

93240

重构-改善既有代码设计:重构原则(二)

2.为何重构 1)改进软件设计(整理代码重构和设计是相辅相成,它和设计彼此互补。...重构其实就是整理代码,让所有带着发散倾向代码回归本位。...当你也发生这样情形时,通过重构代码可以加深对原设计理解,发现其中问题和隐患,构建出更好代码。 4)提高编程速度 良好设计是维持软件开发速度根本,重构可以帮助你更快开发软件。...将条件逻辑转化为消息形式,往往能降低代码重复。增加清晰度并提高弹性。 4.何时不该重构 1)代码是在太混乱了,设计完全错误。 2)如果项目已近最后期限,应该避免重构。...3)重构还不如重新编码。即重构工作量显著影响Estimate 5.重构流程 1)读懂代码(包括测试例子代码) 2)进行重构 3)运行所有的Unit Tests 6.

43720
领券