首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏青玉伏案

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

    首先会给出需要重构代码,然后对其进行分析,然后对症下药,使用之前我们分享的重构规则对其进行一步步的重构。 今天博客会给出原始的代码,也是需要进行重构代码。当然原始代码完全符合需求,并且可以正确执行。废话少说,先看示例吧。 一、需要重构代码 在本篇博客的第一部分,我们先给出完成上述需求需要重构代码。 电影价格计算规则:   普通片儿--2天之内含2天,每部收费2元,超过2天的部分每天收费1.5元   新片儿--每天每部3元   儿童片--3天之内含3天,每部收费1.5元,超过3天的部分每天收费1.5 因为在每次重构之前,我们修改的是代码的内部结构,而代码模块对外的调用方式不会变的。所以我们所创建的测试用例可以帮助验证我们重构后的程序是否可以正常的工作,是否重构后还符合我们的需求。 本篇博客中每次重构过程的完整实例会在github上进行分享。对每次重构代码都进行了系统的整理。今天博客中的代码整理的结果如下。 ?

    2.3K70发布于 2018-01-11
  • 来自专栏Kirito的技术分享

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

    日常工作中,相信大家都见过一些看见就想骂人的代码,那么今天呢,我们就来聊聊何时应该重构代码,以及如何重构代码重构不止是代码整理,它提供了一种高效且受控的代码整理技术 2.为何重构 改进软件设计:如果没有重构,程序的设计会逐渐变质,重构很像是在整理代码,你所做的就是让所有的东西回到应处的位置上。 3.何时重构 任何情况下我都反对专门拨出时间进行重构重构本来就不是一件应该特别拨出时间做的事情,重构应该随时随地的进行。 3.过大的类 如果想利用单个类做太多的事情,其内往往就会出现太多实力变量。 类内如果有太多代码,也是代码重复、混乱病最终走向死亡的源头。 3.内联临时变量 有一个临时变量,只被一个简单的表达是赋值一次,而它妨碍了其他重构手法。

    2.1K30发布于 2021-09-08
  • 来自专栏IT云清

    代码重构

    最近在对手头的项目进行重构,以下是这个过程中的一些思考。 1.项目为什么要重构? ,还是拿这个接口,然后无视多余的数据; 3.一个接口返回60多个字段,而且这些字段很多都是查询后经过计算的; 4.一个方法300多行,而且没有一行注释; 5.监控出的慢sql追过去都是那种复杂无比没法看的 解决方法: 重构这种代码,是最痛苦的事情了。 ; 2.sql语句好好写,你的装x对公司和团队是一种灾难,fuck; 3.写接口思考一下,低耦合啊,方法功能单一一些,这样其他地方或者其他人可以复用啊; 4.没用的垃圾你给删掉啊,别人不敢删你的代码,以为你的代码哪天有用 5.做到了第3点上面的问题2就没了啊,方法功能单一原则啊!

    78630发布于 2019-01-22
  • 来自专栏用户1337634的专栏

    代码重构

    为什么要重构? 保持代码处于一个可控状态,而且对个人来说也非常锻炼人,可以很好的使用学到的设计模式、编码原则等 什么时候重构? 持续重构 代码出现"坏味道"的时候,比如类太大,分支判断太多等 如何重构? 大规模高层次重构,需要有计划并且分阶段执行,保证代码的可运行,这样才能不耽误需求进度 小规模低层次重构,可以随时进行 使用单元测试保证代码重构后的正确性

    52730发布于 2021-11-24
  • 来自专栏京程一灯

    重构-代码整洁之道TypeScript版》第3

    ---- 今天让我们来继续第3天,老规矩先来回顾一下昨天我们都实现了哪些: Change Reference to Value(将引用对象改为值对象) Change Value to Reference (图片:博格达峰) 什么是重构? 简单理解就是不改变软件可观察行为的前提下,改善其内部结构,以提高理解性和降低修改成本。 ---- 1. 这里也可以使用逻辑与继续更复杂的应用 // if(isNotEligible){ if(isNotEligible && onVacation){ return 0; } } 3. :在条件表达式的每个分支上有着相同的一段代码,将这段代码搬到条件表达式之外。 动机?:移除相同的重复代码才更更清楚的表明哪些东西随条件的变化而变化,哪些东西保持不变。 :你手上有一些传统过程化的代码,没有任何封装。现我们可将数据记录变成对象,将大块的行为分成小块,并将行为移入到相关对象之中。 动机?

    77530发布于 2020-08-04
  • 来自专栏测试开发干货

    接口测试平台代码实现55:首页重构-3

    接下来我们进行美化操作: <h3> 您的请求记录:</h3> <div id="home_log_plan" style="padding-left: 20px;overflow-y: i.api_host }}{{ i.api_url }} </a> <br> {% endfor %} </div> 小伙伴不要拘泥于教程中的设计,尽量自由发挥美学细胞,教程中的<em>代码</em>你可以当作是草稿或者基础

    54120编辑于 2022-05-19
  • 来自专栏青玉伏案

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

    在《代码重构(一):函数重构规则(Swift版)》和《代码重构(二):类重构规则(Swift版)》中详细的介绍了函数与类的重构规则。 在本篇博客中将会结合着Swift代码实现的小实例来分析一下数据重构的规则,并讨论一下何时使用那些重构规则进行数据重构3.从根本上进行重构 上面代码的修改不能称为代码重构,因为其改变的是不仅仅是模块内部的结构,而且修改了模块的调用方式。 (3)、对此次重进行测试,我们任然使用第一部分使用的测试用例。也就是说该模块对外的接口是没有变化的,下方就是对重构后的代码的测试结果。 这时候我们就可以使用“以字段取代子类”的方式来进行重构,下方截图就是重构后的代码片段。

    1.5K60发布于 2018-01-11
  • 来自专栏Go工具箱

    3个实用重构技术,改进你的代码

    代码重构是在不改变外部功能的情况下对现有代码进行改进。它是编程的核心部分之一,不容忽视。否则,您就无法获得更好的代码版本。代码重构可以增强代码的可读性、可维护性和可扩展性。 今天,我们将探讨一些可以帮助您更好地重构代码的技巧。 如何重构 在寻找重构的技术之前,让我们看看如何将代码重构集成到编码过程中。以下建议可用于此目的: 专门为重构代码分配时间。 32; if (temperature > FREEZING_POINT) { // Do something if temperature is above freezing } 技术3: 这个代码不需要完全相同,但它可以执行类似的任务,或者从原始代码进一步扩展。重复的代码可能会导致几个问题:包括增加维护成本、难以更改代码库以及引入错误的更高风险。在重构代码时,您必须注意重复的代码重构后,我们将其替换为为两者提供和的函数。 结论 对于任何想要提高代码质量、性能和可维护性的开发人员来说,重构都是必不可少的实践。

    61720编辑于 2023-08-28
  • 来自专栏全栈程序员必看

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

    在《代码重构(一):函数重构规则(Swift版)》和《代码重构(二):类重构规则(Swift版)》中详细的介绍了函数与类的重构规则。 在本篇博客中将会结合着Swift代码实现的小实例来分析一下数据重构的规则,并讨论一下何时使用那些重构规则进行数据重构3.从根本上进行重构 上面代码的修改不能称为代码重构,因为其改变的是不仅仅是模块内部的结构,而且修改了模块的调用方式。 (3)、对此次重进行测试,我们任然使用第一部分使用的测试用例。也就是说该模块对外的接口是没有变化的,下方就是对重构后的代码的测试结果。 这时候我们就可以使用“以字段取代子类”的方式来进行重构,下方截图就是重构后的代码片段。

    1.3K10编辑于 2022-07-05
  • 来自专栏青玉伏案

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

    关于上述这些函数重构的规则更为详细的信息请参考上一篇博客,在此就不做过多的赘述了。 今天这篇博客主要介绍一下类的重构。在我们写代码时,有些类是不规范的,需要重构。 在BookCustomer中有3个字段,name表示用户的名称,isVip表示用户是否是会员,books表示该用户所购买的书的集合。 下方代码段是使用Move Method重构后的结果。 ? 3.使用函数重构 在使用Move Method重构后,我们看出在BookCustomer类中的charge()函数是可以使用Extract Method和Replace Temp With Qurey进行重构的 当然,对类的细化也是为了减少代码的重复性,以及提高代码的复用性,便于代码的维护。下方将会通过一个实例,对类进行提炼。 1.重构前的代码 下方是我们将要进行重构代码段。

    1.7K100发布于 2018-01-11
  • 来自专栏青玉伏案

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

    重构是项目做到一定程度后必然要做的事情。代码重构,可以改善既有的代码设计,增强既有工程的可扩充、可维护性。随着项目需求的不断迭代,需求的不断更新,我们在项目中所写的代码也在时时刻刻的在变化之中。 此时,你要考虑重构了。 重构,在《重构,改善既有代码的设计》这本经典的书中给出了定义,大概就是:在不改变代码对外的表现的情况下,修改代码的内部特征。 3.引入临时变量是为了更好的可读性,如果临时变量所代表的表达式多次使用,我们就可以对上述函数在此使用Replace Temp with Query规则进行重构3.接着,我们就可以在新的Discount类中的compute()方法中使用我们上述介绍的规则进行重构。 这8大规则在函数代码重构时时非常实用的,并且也是非常重要的。还是那句话,虽然代码是使用Swift语言实现的,但是代码重构的手法和思想和语言无关。接下来还会继续更新关于代码重构的博客,敬请期待吧。

    2.1K50发布于 2018-01-11
  • 来自专栏用户10106051的专栏

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

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

    34810编辑于 2024-03-25
  • 来自专栏iOSer

    代码重构原则

    重构目的 相同的代码最好只出现一次 主次方法 主方法 只包含实现完整逻辑的子方法 思维清楚,便于阅读 次方法 实现具体逻辑功能 测试通过后,后续几乎不用维护 重构的步骤 新建一个方法 新建方法(写好伪代码 ,根据伪代码写未实现的代码,根据报错,实现方法) 把要抽取的代码,直接复制到新方法中 根据需求调整参数,根据报错向方法名添加参数 调整旧代码 注释原代码,给自己一个后悔的机会 调用新方法 测试 优化代码 在原有位置,因为要照顾更多的逻辑,代码有可能是合理的 而抽取之后,因为代码少了,可以检查是否能够优化 分支嵌套多,不仅执行性能会差,而且不易于阅读 测试 修改注释 在开发中,注释不是越多越好 如果忽视了注释 ,有可能过一段时间,自己都看不懂那个注释 .m 关键的实现逻辑,或者复杂代码,需要添加注释,否则,时间长了自己都看不懂! .h 中的所有属性和方法,都需要有完整的注释,因为 .h 文件是给整个团队看的 重构一定要小步走,要边改边测试

    93620发布于 2020-09-04
  • 来自专栏yuyy.info技术专栏

    代码重构,消灭if

    写完后,看着这段代码,陷入了沉思。我写了这段代码,得到了什么。一、完成工作任务。二、。。。(想不出来了)。这不是工具人吗? 随后重新审视了这段代码。一、用到了WebService。二、代码重复率高。 三、代码臃肿,没有区分主干。 那,优化?最近手上的挺多的,而且需要花费半天时间,还得重新测试。 那,不优化?不提升,永远写烂代码。遇到不会的知识不去学习,永远都不会。 答案很明显了,干! 但是这儿太多重复代码了。修改如下: if(!valided(result,A) || !valided(result,B) || ! func(param)){ result="参数"+param+“不合法” return false } return true } 到此,这段代码优雅了许多

    34710编辑于 2022-09-21
  • 来自专栏只喝牛奶的杀手

    关于代码重构

    为什么要重构重构是软件开发过程中一个重要的事情之一,重构与重写的区别: 重构:不是对已有代码的全盘否定,而是对不合理的结构进行调整,合理的模块进行改动;利用更好的方式,写出更好,更有维护性代码。 重写:已有的代码非常复杂混乱,难以修改,重构的时间还不如重新写一个来得快;根据需求另立一个项目,完全重写。 车子脏了就得洗,坏了就得修,报废了就得换。 程序也一样,不合需求就得改,难于跟上业务的变更就得重构,实在没法改了就得重写。 重构时机 添加功能时 修补错误时 复审代码时 怎样重构 重命名 提炼函数 去除不必要的参数 用对象取代参数 隐藏函数 用常量名替换常量值 用对象取代数组 判断放入循环内,减少循环代码 相同(或及相似)的代码重复出现 减少嵌套的层次,如果有 If 判断,对否定条件提前退出 用设计模式改善代码设计 需求增加,业务变更,需要我们持续重构,持续优化,此恨绵绵无绝期。 ?

    72030发布于 2019-09-02
  • 来自专栏程序人生

    代码重构之道

    这里我谈谈自己在工作中,对重构的看法。 重构之道 自动化测试 重构代码最最最重要的一个先验条件是:自动化测试。子在川上曰: 一切没有自动化测试的代码重构都是耍流氓。 写代码的目的是什么? 如果重构了十行代码,却需要花费一个小时进行运行一次单元测试,那么你要么不会去重构代码,要么你重构了不会去测试。 好的重构发生在构建系统的每时每刻,而非问题发生或者老板要求。 时时刻刻重构 前面已经提到了重构代码最佳的时间点:撰写每行代码的时候,而非火烧屁股的时候。那什么样的情况你需要进行重构呢? 一个函数最多有 3 层 callback。这是逼着程序员不要误用 callback,尽量多用 Promise。 一个函数最多 5 个参数。参数太多的函数,基本是试图揉太多事情在一起。 整个过程和代码重构看上去没什么关系,但处处要求程序员重构代码以达到比较高的标准。相信我,这么做即便大家开始不适,等渐渐建立信心之后,会时时刻刻重构,自我追求更高质量的代码

    1.2K40发布于 2018-03-28
  • 来自专栏QQ音乐前端团队专栏

    代码重构之道

    导语 最近看到有同学提问:“代码重构有意义吗?”,“关于代码重构有什么好的方法论吗?” 而代码首先是写给人看的,然后才是给计算机看的。 3.Refactoring帮助尽早的发现错(Bugs) Refactoring是一个code review和反馈的过程。 一个Task的计划是天,如果为了Refactoring,需要更多的时间( 2天或更多)。推迟Refactoring,同步可以忽略。 在重构开始前可以指定具体的衡量指标,比如消除多少行重复代码代码复杂度降低多少,代码耦合度降低多少等,有清晰的目标就知道什么时候算重构完成 3.暴力重构,不讲究方法 很多人都认同这一观点。 zhuanlan.zhihu.com/p/32931437 https://www.cnblogs.com/levenyes/p/9903156.html https://www.jianshu.com/p/f667ea3e4a11

    1.5K10发布于 2020-07-21
  • 代码重构策略

    在软件开发的过程中,代码重构是一种提升软件质量、增强系统稳定性、提高开发效率的重要手段。本文将详细探讨代码重构的时机、主导者以及具体步骤,帮助我们更好地理解和实践代码重构。何时重构? 修复bug时:当我们在修复一个bug时,如果发现代码结构混乱或者逻辑不清晰,那么进行重构可以帮助我们更好地理解代码,并减少类似的bug出现。3. 定期进行代码重构可以帮助保持代码的清晰性和可维护性。谁来主导重构代码重构可以由不同的角色来主导,具体取决于团队的组织结构和开发流程。 专门的代码重构团队:在一些大型项目中,可能会有专门的代码重构团队负责对代码进行重构,以提高整个项目的质量和稳定性。怎样重构? 这可以帮助发现重构过程中可能存在的问题,确保重构后的代码能够满足原有的需求和功能,并且保证不会对系统的其他部分造成影响。实施重构:在进行代码重构时,需要依据设计方案逐一对代码进行改写和优化。

    59510编辑于 2024-06-15
  • 来自专栏杨龙飞前端

    业务代码重构

    刚拿到这个产品的代码时,我也是一头雾水,动就上千行的逻辑代码,看的让人很费劲,完全没有任何套路可言,一撸到底的代码,拿到后,我就先把代码拆开,一块一块的看 ? 最初只有createorder.js,拆开后变成了4个,createordervalidate.js,createorderutils.js,createorderinit.js,拆过之后,代码分工就比较清晰了 重构过之后,编辑,新增订单可以公用一套代码,直接调用对应的方法就行了,即使增加一个查看框,也用不了太久就能搞定,之前的方式就是代码copy,没有抽出业务公共的逻辑。 jquery系列的老的产品代码,最好的重构方法就是插件化,现代三大框架,vue,react,angular,就是组件化,加上,数据状态管理器搞定。

    81030发布于 2018-09-19
  • 来自专栏青玉伏案

    代码重构(五):继承关系重构规则

    当然还是延续前几篇博客的风格,我们在博客中的代码实例依然使用Swift语言来实现,当然还是那句话,使用什么语言无所谓,关键是看重构的场景以及重构的思想。 “重构”不仅仅可以改善你既有的代码设计,还可以改变你组织代码的思路,使你的程序在设计之初就趋于合理化,利于程序的扩充。 所谓一名Coder,重构和设计模式是必须涉猎的部分,因为这两者可以让你写出更漂亮的代码,当然要想真正的掌握设计模式以及各种重构手法,还得结合不同的实例来进行实践。 重构后的代码如下所示: ? 而将“Pull Down Field (字段下移)”正好与上面的情况相反。 下方代码段是重构后的代码,父类中多出的方法就是我们提取的模板函数,而子类中只给出相应的实现细节即可。 ?

    15.3K61发布于 2018-01-11
领券