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

再见,干净代码

同事刚刚提交了他们整个星期一直在编写代码。我们正在开发一个图形编辑器画布,他们实现了通过拖动边缘小手柄来调整矩形和椭圆等形状大小。 代码运行正常。 但它是重复。...太干净了。如果我们想要改变特定方向或形状行为,我们可以在一个地方完成,而不是到处更新方法。 已经很晚了(我太过分了)。我将我重构提交到主分支并上床睡觉,为自己整理同事混乱代码能力感到骄傲。...我老板邀请我进行一对一交谈,在那里他们礼貌地要求我撤销我更改。我感到震惊。旧代码很混乱,而我代码干净! 我勉强同意了,但花了我好几年才明白他们是正确。...我现在明白,我重构”在两个方面都是一场灾难: • 首先,我没有和写这段代码的人交谈。我重写了代码并在没有他们参与情况下进行了检查。即使这是一个改进(我不再相信),这种做法也是非常糟糕。...我估计第一次看到提取函数或重构类可以使复杂代码变得简单,肯定感到很开心。如果你对自己技艺感到骄傲,就会有诱惑去追求代码整洁性。试着这样做一段时间吧。 但不要止步于此。

5610

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

日常工作中,相信大家都见过一些看见就想骂人代码,那么今天呢,我们就来聊聊何时应该重构代码,以及如何重构代码。...重构不止是代码整理,它提供了一种高效且受控代码整理技术 2.为何重构 改进软件设计:如果没有重构,程序设计会逐渐变质,重构很像是在整理代码,你所做就是让所有的东西回到应处位置上。...帮助找到bug:对代码进行重构,可以深入理解代码作为,在搞清楚程序结构同时,想不把bug揪出来都难。提高编程速度:良好设计是快速开发根本,改善设计、提高可读性,减少错误,这些都是提高质量。...何时不该重构:有时候既有代码实在太混乱,重构它还不如重新写一个来得简单。 重写而非重构一个清楚讯号是:现有代码根本不能正常运作。...针对该参数每一个可能值,建立一个独立函数。 如果某个参数有多种可能值,而函数内又以条件表达式检查这些参数值,根据不同参数值做出不同行为,那么就应该使用本项重构

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

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

首先会给出需要重构代码,然后对其进行分析,然后对症下药,使用之前我们分享重构规则对其进行一步步重构。...今天博客会给出原始代码,也是需要进行重构代码。当然原始代码完全符合需求,并且可以正确执行。废话少说,先看示例吧。 一、需要重构代码 在本篇博客第一部分,我们先给出完成上述需求需要重构代码。...因为在每次重构之前,我们修改代码内部结构,而代码模块对外调用方式不会变。所以我们所创建测试用例可以帮助验证我们重构程序是否可以正常工作,是否重构后还符合我们需求。...下方就是我们创建测试用例(当然,在iOS开发中你可以使用其他测试框架来进行单元测试,重构时,单元测试是少不了)。在本篇博客中重构代码仍然使用下方测试用例。...经过分析后,我们不难发现下方红框当中代码是一个完整模块,一个是进行单价计算,一个是进行积分计算,我们可以将这两块代码进行提取封装成一个新方法。

1.8K70

代码重构

最近在对手头项目进行重构,以下是这个过程中一些思考。 1.项目为什么要重构?...1.1架构无法横向拓展 问题: 在项目初期,我们只做了pc端应用,但是项目到了一定阶段后,我们需要开发app;此时发现,由于前期没有很好规划,项目的架构无法拓展,虽然项目也是按照web层,service...,我们开发app时,只用写一套页面,再写一套web层就可以了,后面的业务逻辑都在service层中,可以直接公用。...解决方法: 重构这种代码,是最痛苦事情了。...除了重写,没有其他办法,因为根本看不懂,或者说,看懂一个300行没有注解方法花费时间,要远远大于根据需求自己重写一个新方法;公司开发团队一定要打成一种共识: 1.写代码写优雅一点,必要注释写一下

52230

代码重构艺术

如果没有人为代码质量负责任,代码总是会往越来越混乱方向演进。当混乱到一定程度之后,量变引起质变,项目的维护成本已经高过重新开发一套新代码成本,想要再去重构,已经没有人能做到了。...这段代码可能是别人写,也可能时自己写,但无论如何,当你觉得这段代码逻辑糟糕,需要花费几分钟才能明白其中含义时,你就要想着如何去重构才可以使代码更加简洁直观 有计划代码重构 「找寻重构开发进度中适合自己平衡点...尽管重构目的是加快开发速度,但同时重构也会拖慢软件开发进度。如果时间充足,那么当下就是进行重构最好时机。当鱼和熊掌不可兼得时候,应当保证软件开发进度不受影响,其次才是进行重构。...当重构完成之后,如果新代码仍然能通过单元测试,那就说明代码原有逻辑正确性未被破坏,原有的外部可见行为未变。 测试驱动开发是非常完美的方案。但实际上大部分IT公司程序由于种种原因并没有单元测试。...使用组合+接口+委托方式可以代替大多数继承场景。 重构代码设计原则 开闭原则 (The Open/Closed Principle) ❝ 实体应开放扩展关闭修改。

77620

重构代码Tricks

重构代码就是依赖于设计模式而实现一个必要手段,可以说设计模式就是重构代码目标,但他手段却不仅仅只有设计模式这些大而全,同样存在小而精,我们随处可以使用。...封装功能块代码 我们通常在写代码时候,一开始,并不需要考虑太多。在后期可以进行修改和提炼。...我们可以使用命令模式进行重构。 这就涉及到另外一个tip. 将分支转化为函数 上面代码里面的分支完全可以使用函数来进行代替。...这就是通过命令模式,来重构代码,完成性能和阅读优化。 但有时候,使用分支,会比这样更简洁,那当然可以使用分支啦。 而使用分支还要主意一个tip就是....大部分重构小技巧差不多介绍完了(智商有限),如果,大家有什么更好建议欢迎留言反馈. 原文出处:IVWEB社区 未经同意,禁止转载

1.2K10

干净代码,贼差性能

很多程序员还是一个“小萌新”时就听过这样说法:写出来代码必须得“干净”,为此很多人做了大量阅读和学习。 Redux 作者 Dan Abramov 就曾痴迷于“干净代码”和删除重复代码。...多年前他和同事一起开发一个图形编辑器画布,当看到同事提交代码时,他吐槽道,“这些重复代码看起来真的很碍眼。”随后,他自己想办法把重复代码删掉了。...无独有偶,专门从事游戏引擎研发资深开发者 Casey Muratori 近日也发表文章称,那些所谓“干净代码规则“其实挺无所谓,多数情况下也不太影响代码实际运行。”...这些要求相当具体,听起来只要照着做了,就让编写出“干净代码。但问题是,这样代码执行起来效果如何? 为了更确切地测试“干净代码实际表现,我决定直接用相关文献里列出示例代码。...另外,编译器现在可以准确理解我们在循环中操作,即查看 GetAreaSwitch 函数查看整个代码路径。这样,编译器就用不着对只向运行时开放虚拟面积函数做操作猜测。

53510

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

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

7110

如何写出干净 JavaScript 代码

一段干净代码,你在阅读、重用和重构时候都能非常轻松。编写干净代码非常重要,因为在我们日常工作中,你不是仅仅是在为自己写代码。实际上,你还需要考虑一群需要理解、编辑和构建你代码同事。...toggleThemeSwitcher() { // ... } function didAgreeToAllTerms(user) { // ... } 使用默认参数 默认参数比 && || 或在函数体内使用额外条件语句更干净...,使测试、调试和重构更容易。.../public/${name}`); } 避免写重复代码 如果你写了重复代码,每次有逻辑改变,你都需要改动多个位置。...✅ function generateCanonicalLink(user) { const session = user.getSession(); // ... } 好了,去写出你漂亮代码

90310

编写干净代码之变量篇

当我们自己写代码时候,都知道这一行行代码是什么意思,如何工作,如何实现业务需求,当然,这些仅仅是「当我们自己在写」时候。...而真实情况是:当时确实如此,但明天,下周,明年,事实可能是南辕北辙差别。还有其他人了解我编码风格吗?对于必须维护我代码新团队成员来说,代码是否便于阅读?...这就是为什么「干净代码如此重要原因。使代码尽可能干净将提高其质量,以便其他人可以直观地理解它,从而减少出错可能性并提高维护质量。 在本文中,将只讨论干净代码,变量一个方面。...最好在写代码之前统一制定相应用词规范。 善用IDE 大多数开发人员使用自动完成IDE工具,因此将根据其名称选择变量或方法。 大多数程序员而不是为编译器编写代码。...结论 变量名称只是使代码干净一小部分,在确保维护代码的人员理解道路上,还有很长路要走。

66730

代码重构之道

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

92440

如何写出优质干净代码

编写干净代码并不是一件容易事情,这需要尝试不同技巧和实践。 作为一名开发者,编写一手干净代码很重要. 先列举出编写干净代码一些好处,再提出6个技巧用于编写干净代码,供开发者进行参考学习。...代码越混乱,开发人员就越需要花更多时间去充分理解它,这样才能使用这些代码。而且,如果代码太乱,开发人员可能会决定停止阅读这些代码自己从头开始编写。...2.有利于团队新员工培训 编写干净代码另一个好处与第一个好处是密切相关,那就是可以让新员工更容易更快地使用代码。假设我们需要雇佣一个开发人员,那么要花多长时间才能理解代码学会使用它呢?...还有一种情况,开发人员会说服团队其他人采纳遵循自己编码模式。如果开发人员提出编码模式更干净,并且能带来更好结果,这当然是件好事。...正如将在以下看到干净代码包含遵循着一些方法。这些方法使代码干净、易读、更易于理解、更简单。当然没有必要实施所有的方法,实施遵循一两项措施就足以带来积极结果。

73720

业务代码重构

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

62230

如何写出干净 JavaScript 代码

一段干净代码,你在阅读、重用和重构时候都能非常轻松。编写干净代码非常重要,因为在我们日常工作中,你不是仅仅是在为自己写代码。实际上,你还需要考虑一群需要理解、编辑和构建你代码同事。...toggleThemeSwitcher() { // ... } function didAgreeToAllTerms(user) { // ... } 使用默认参数 默认参数比 && || 或在函数体内使用额外条件语句更干净...,使测试、调试和重构更容易。.../public/${name}`); } 避免写重复代码 如果你写了重复代码,每次有逻辑改变,你都需要改动多个位置。...✅ function generateCanonicalLink(user) { const session = user.getSession(); // ... } 好了,去写出你漂亮代码

1.1K30

编写干净C#代码技巧

介绍 在当今时代,编写代码并不困难。然而,编写干净且可伸缩代码并不容易。在本文中,我们将讨论一些为我们项目编写干净C#代码技巧。...乍一看,任何以前从未见过您代码开发人员都必须尽可能地理解它,它帮助我们更好地理解代码。 下面是编写干净C#代码一些重要技巧。 使用好IDE 首先,为您技术堆栈选择最好IDE。...在我们例子中,Visual Studio是C#最流行、最好IDE之一。它是微软可靠、完全产品。一些开发人员也喜欢Rider IDE(付费)。使用这些IDE可以确保代码保持整洁。...Visual Studio有相当稳定智能感知特性,可以纠正和建议代码更改。 使用有意义名字 命名变量可能是整个软件开发生命周期中最困难部分。为变量和方法想一个有意义名称是非常耗时。...但是跳过这个过程随机命名也不是一个好主意,不是吗? 不建议写法 int d; 这是命名变量最简单方法,对吧?但是不要这样做。一个好名称可以帮助其他开发人员理解变量/方法上下文和用法。

19930

代码重构之道

4.Refactoring可以提高开发速度 Refactoring对设计和代码改进,都可以有效提高开发速度。好设计和代码质量是提高开发速度关键。...在一个有缺陷设计和混乱代码基础上开发,即使表面上进度较快,但本质是延后对设计缺陷发现和对错误修改,也就是延后了开发风险,最终要在开发后期付出更多时间和代价。...项目的维护成本远高于开发成本 何时重构? 添加新功能时一并重构 为了增加一个新功能,程序员需要首先读懂现有的代码。...建使用空对象,代替对空值检测。 子程序级重构 提取子程序。 将子程序代码内联化。 将冗长子程序转化为类。 用简单算法替代复杂算法。 增加参数/减少参数。 将查询操作同修改操作分开来。...,优秀程序员应当尽量避免低质量代码,最好能够把重构作为日常开发一部分,一边开发一边重构

1K10

关于代码重构

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

54630

代码重构,消灭if

最近工作中,开发一个功能,可以参照已有类似的功能。二话不说,CtrlCV,修修补补,完事。 写完后,看着这段代码,陷入了沉思。我写了这段代码,得到了什么。一、完成工作任务。二、。。。(想不出来了)。...随后重新审视了这段代码。一、用到了WebService。二、代码重复率高。三、代码臃肿,没有区分主干。 那,优化?最近手上挺多,而且需要花费半天时间,还得重新测试。 那,不优化?...不提升,永远写烂代码。遇到不会知识不去学习,永远都不会。 答案很明显了,干!...借此学习下WebService 抽取公共方法 抽取方法,体现红花绿叶 解决Sonar问题 期间还遇到个有意思地方,以前写是 if(!...func(param)){ result="参数"+param+“不合法” return false } return true } 这里条件看着真不舒服

20210
领券