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

    Chapter 2重构的原则

    1,什么是重构? 在不改变软件可观察行为的前提下,使用一些重构的手法,提高代码可读性。 换句话说,在保持软件可用的前提下,修改代码使得更加容易被理解。 2,为什么重构? 为了后续的代码维护和修改,易读是重构的核心价值。 除此之外,重构随之带来的好处有: 找到bug 提高编程速度(在代码量累计到一定程度时,重构过的代码会更加易于添加新功能) 3,什么时候重构? 使代码更易理解时重构 顺便重构(修复bug,添加新功能) 代码复审(code review)时重构 总而言之:重构的门槛远远没有想象中那么高,重构是对既有代码的修改,也许我们在无意识中就已经做了这样的工作 就如同重构的定义,在可用的前提下,提高重构的技术。 什么时候不应该重构? 对于一段凌乱的代码,如果不需要修改它,就不需要重构。 只有当你需要理解其工作原理时,重构才变得有价值。 如果重写比重构更加容易,那就不需要重构了。(判断) 4,重构会遇到哪些问题?

    77910发布于 2020-01-22
  • 来自专栏全栈程序员必看

    【《重构 改善既有代码的设计》学习笔记2重构原则

    【《重构 改善既有代码的设计》学习笔记2重构原则 本篇文章的内容来自《重构 改善既有代码的设计》一书学习笔记整理并且加上自己的浅显的思考总结! 2重构使软件更容易理解 可理解性之一:让第二读者更容易懂程序代码 所谓程序设计,很大程度就是与计算机交谈:让计算机按照你编写的代码来做事情。 (事不过三,三则重构2、添加功能时重构 最常见的重构就是添加新特性的时候,代码的设计无法帮助我们轻松的添加所需的特性。 3、修改错误时重构 遇到bug,解决bug的时候,可以进行重构2、修改接口 重构的时候如果要修改已经发布接口的要小心。如果有新旧接口,那么尽量让旧接口调用新接口。千万不要复制函数实现,陷入重复代码的泥潭中。 【这里需要进行评估,很多人接收新项目的时候,不愿意看别人写的代码,任何一个需求过来,都是些自己写一遍,说重构还不如自己写】 (2)如果没有足够的时候,不建议重构,或者早就应该重构

    76430编辑于 2022-07-20
  • 来自专栏IMWeb前端团队

    移动端重构实战系列2——line list

    这个UI应该是每个移动端网页都必备的,而且使用场景也是非常的丰富,所以这里我们采用一步步循序渐进的方式去重构。 display: block; width: 14px; height: 8px; border-bottom: 2px solid currentColor; border-left: 2px solid currentColor; transform:

    55220发布于 2019-12-04
  • 来自专栏腾讯IMWeb前端团队

    移动端重构实战系列2——line list

    ”本系列教程为实战教程,是本人移动端重构经验及思想的一次总结,也是对sandal及sheral UI的一次全方位剖析,首发在imweb和w3cplus两大站点及“前端Talk”微信公众号,其余所有标注或没有标注来源的均为转载 list,对应的scss组件为_line-list.scss,下图为line-list的一个缩影: 这个UI应该是每个移动端网页都必备的,而且使用场景也是非常的丰富,所以这里我们采用一步步循序渐进的方式去重构 display: block; width: 14px; height: 8px; border-bottom: 2px solid currentColor; border-left: 2px solid currentColor; transform:

    41910编辑于 2022-06-29
  • 来自专栏IMWeb前端团队

    移动端重构实战系列2——line list

    本文作者:IMWeb 结一 原文出处:IMWeb社区 未经同意,禁止转载 ”本系列教程为实战教程,是本人移动端重构经验及思想的一次总结,也是对sandal及sheral UI的一次全方位剖析, 这个UI应该是每个移动端网页都必备的,而且使用场景也是非常的丰富,所以这里我们采用一步步循序渐进的方式去重构。 display: block; width: 14px; height: 8px; border-bottom: 2px solid currentColor; border-left: 2px solid currentColor; transform:

    83280发布于 2018-01-08
  • 来自专栏路遥的专栏

    全新 LeakCanary 2 ! 完全基于 Kotlin 重构升级 !

    Square 公司在今年四月份发布了全新的 2.0 版本,完全使用 Kotlin 进行重构,核心原理并没有太大变化,但是做了一定的性能优化。 你只需要在 build.gradle 文件中添加如下依赖: debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-alpha-2' 2. RefWatcher.watch() 在看源码之前,我们先来看几个后面会使用到的队列。 总结 通读完源码,LeakCanary 2 还是带来了很多的优化。

    72710发布于 2021-08-31
  • 来自专栏测试开发干货

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

    观察一下目前结构: 我们这次改版相当于完全重构了,所以删除掉body 的css属性和一切子内容 现在主页已经是一片空白了。我们要重新设计了。

    65730编辑于 2022-05-19
  • 来自专栏技术之路

    重构学习-重构原则

    什么是重构: 视上下文重构有两个不同的定义,第一个定义是名词形式 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本 重构的另一人用法是动词形式 使用一系列的重构手法 强调一下,重构不会改变软件的可观察行为,也就是说重构之后功能和原来一样。 为什么要重构重构改进软件设计,如果没有重构,程序的设计会逐渐腐败变质。 重构的原动力是:代码设计无法帮助我轻松的添加我所需要的功能,如果用某种设计方式,添加功能会简单的多,这种情况可以用 重构来弥补。重构是一个快速流畅的过程,一旦完成重构,新特性的添加会更快速,更流畅。 如果在修改bug和审查代码时发现不合理的地方也要进行重构,这样是为了更好的阅读和理解代码 何时不重构: 如果发现代码太混乱,重构它不如重写来的简单这种情况下建议重写,不用进行重构。 最后你没有时间进行重构表明你其实早就该进行重构重构与性能: 有时为了让代码更容易理解,会做出一些使程序运行变慢的修改,这是个重要的问题。

    1.3K50发布于 2018-01-31
  • 来自专栏京程一灯

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

    (图片:贡嘎山) 什么是重构 ? 简单理解就是不改变软件可观察行为的前提下,改善其内部结构,以提高理解性和降低修改成本。 ---- 1. 如果不是,我们就用不到使用本项重构,因为可变的值会造成凡人的别名问题。 Immutable.js yarn add immutable -D yarn add redux -D yarn add @types/immutable -D // map1是不可变对象 正用了这条重构规则 import { Map } from 'immutable'; const map1 = Map({ a: 1, b: 2, c: 3 }); const map2 = map1.set('b', 新重构继承体系,往往是将函数和字段在体系中上下移动。完成这些动作后,你很可能发现某个子类并未带来该有的价值,因此需要把超类与子类合并起来。

    83710发布于 2020-08-04
  • 来自专栏fixzd

    重构:以Java POI 导出EXCEL为例2

    这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等。 好了,这篇博文就围绕着上面四个问题进行重构,大家可以试着按照这几个问题对上面代码进行重构,相信经过自己思考和动手后会对代码的设计有进一步的理解。 重构后 那么现在我们再来看看这个问题,如果我们对导出的样式有变动是不是又要修改ExportExcel类? 如果你有更好的建议在评论处留言哦 ---- 问题2:导出的主方法exportExcel参数有点多了,能不能将一些参数合并成一个类或者去除没用的参数?   地址如下 github地址:https://github.com/rainbowda/utils/tree/master/poi/src/main/java/com/utils/poi/update_2

    1K20发布于 2019-02-25
  • 来自专栏学习猿地

    Web前端学习 第2章 网页重构2 常用的html标签

    -- 文档声明 --> 2 <html lang="en"> 3 <head> <! 1

    一级标题标签

    2 <h2>二级标题标签</h2> 3

    三级标题标签

    4

    四级标题标签

    5
    五级标题标签
    6
    六级标题标签 副标题可以使用h2标签。文章中的小标题,我们可以使用h3或h4标签。分别表示三级标题和四级标题。h5和h6这种更低级的标题,用到的情况不是特别多。 1

    前端开发学习心得

    2 3

    本章通过实例向您演示最常用的 HTML 标签,学习 HTML 最好的方式就是边学边做实验。 在实际开发中,我们经常会将超链接放在列表中,代码如下: 1

    90200发布于 2020-06-12
  • 来自专栏韩曙亮的移动开发专栏

    重构重构概要--六大重构模块

    重构方法介绍: 重构改善既有代码的设计 一 重新组织函数 关于注释 :要尽可能少的使用注释 , 注释越多代码的可读性反而更差,注释可以使用函数名来代替 , 不要管函数名有多长, 即使函数名比函数中的代码还要长也不要紧 能更加明确的表明函数的意义,可以将这个算法替换; 二 在对象之间搬移特性 功能模块归属类:对象设计中, 将一个功能模块放在哪个类中,是最重要的任务之一,谁也不能一开始保证设计的是完全合适的,这就需要“对象之间搬移特性”这个重构方法 搬移函数和搬移字段:这两种重构方法都可以解决大多数的问题,如果两种方法同时使用,先搬移字段,在搬移函数。

    96930编辑于 2023-03-27
  • 来自专栏程序员成长指北

    使用 Vue3 重构 Vue2 项目(长文)

    前言 2020年9月18日,vue3正式版发布了,前几天把文档整体读了一遍,感触很深,可以解决我项目中的一些痛点,于是就决定重构之前那个vue2的开源项目。 本篇文章就记录下重构vue2项目的过程,欢迎各位感兴趣的开发者阅读本文。 image-20201006154454592 项目目录对比 按照上述步骤,即可创建一个vue3的项目,接下来我们将需要重构的vue2项目的目录与上面创建的项目进行下目录对比。 项目重构 接下来,我们来一步步把vue2项目的文件迁移到vue3项目中,修改不合适的地方,让其适配vue3.0。 接下来我会尝试重构vue-native-websocket这个插件,让其支持vue3。 最后放上本文重构好的项目代码地址:chat-system

    3.2K20发布于 2020-11-10
  • 来自专栏爱编码

    重构

    个人觉得代码重构非常有必要,写程序不但要给机器运行,更让人看的明白。 写代码如写诗一样才行。(内容代码为主,建议实践一下比较好点) 实例 一个图书馆出租书的程序。 接着:直接看下面的代码重构呗 Book类: 将按照书的不同类型,按照不同价格统计的方法移动到Book类中,因为这个按理应该属于Book类中的。 第二次重构 经过第一次重构,还是没有实现需求修改增加多个分类的效果。那么接下来使用接口抽象来再次重构。 最后想说: 如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那么就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。 参考文章 【重构】作者: Martin Fowler

    1.1K10发布于 2019-07-03
  • 来自专栏青玉伏案

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

    在《代码重构(一):函数重构规则(Swift版)》和《代码重构(二):类重构规则(Swift版)》中详细的介绍了函数与类的重构规则。 对数据的组织形式以及操作进行重构,提高了代码的可维护性以及可扩展性。 与函数重构与类重构类似,对数据结构的重构也是有一定的规则的。通过这些规则可以使你更好的组织数据,让你的应用程序更为健壮。 在本篇博客中将会结合着Swift代码实现的小实例来分析一下数据重构的规则,并讨论一下何时使用那些重构规则进行数据重构。 还是那句话“物极必反”呢,如果不恰当的使用重构规则,或者过度的使用重构规则不但起不到重构的作用,有时还会起到反作用。废话少说,进入今天数据重构的主题。 一.  1 //重构2 class Person { 3 var name: String = "" 4 5 init(name: String) { 6

    1.5K60发布于 2018-01-11
  • 来自专栏只喝牛奶的杀手

    重构

    说到重构,我们再来了解一下定义:重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,利用设计思想、设计原则、设计模式编程规范等理论来优化代码。 重构目的:1.重构是时刻保证代码质量的一个极其有效的手段,防止代码腐化。当代码腐化到一定程度,量变引起质变,项目的维护成本已经高过重新开发一套新代码的成本。2.优秀的架构和代码是迭代出来的。 时机:持续的重构(做好重构计划,小步快跑,要保证代码仓库中的代码一直处于可运行、逻辑正确的状态.要做好与新功能,老代码的兼容工作。利用静态代码扫描,codeReview做好日常持续重构)。 重构手法总结为“十六字心法”,非常形象、贴切:旧的不变,新的创建。一步切换,旧的再见。 “旧的不变”是指先不动旧方法;“新的创建”是指创建一个跟原来方法功能相同的新方法,你可以通过先复制再重构的方式,来得到这个新方法,也就是整个系统的一个增量;“一步切换”是指,在充分测试之后,新的方法可以完全替代旧方法了

    55730编辑于 2023-09-18
  • 来自专栏马超的博客

    重构-重复关系重构

    今天看到社区有人提问如何进行关系重构,顺手回答了一下。在此记录下关系重构的方法。 }]->(B) CREATE (A)-[:Realation {name:'属性2'}]->(B) CREATE (A)-[:Realation {name:'属性2'}]->(B) CREATE (A Realation {name:'属性3'}]->(B) - 查询测试数据 MATCH p=(A:Test {name:'A'})-->(B:Test {name:'B'}) RETURN p - 如何重构 ]-(B) (A)-[:Realation{name:‘属性2’]-(B) (A)-[:Realation{name:‘属性2’]-(B) (A)-[:Realation{name:‘属性3’]-(B) ‘属性3’]-(B) - 重构关系 MATCH p=(A:Test {name:'A'})-[r]->(B:Test {name:'B'}) WITH ID(r) AS id,r.name AS name

    1.1K20编辑于 2022-07-04
  • 来自专栏全栈程序员必看

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

    在《代码重构(一):函数重构规则(Swift版)》和《代码重构(二):类重构规则(Swift版)》中详细的介绍了函数与类的重构规则。 对数据的组织形式以及操作进行重构,提高了代码的可维护性以及可扩展性。 与函数重构与类重构类似,对数据结构的重构也是有一定的规则的。通过这些规则可以使你更好的组织数据,让你的应用程序更为健壮。 在本篇博客中将会结合着Swift代码实现的小实例来分析一下数据重构的规则,并讨论一下何时使用那些重构规则进行数据重构。 还是那句话“物极必反”呢,如果不恰当的使用重构规则,或者过度的使用重构规则不但起不到重构的作用,有时还会起到反作用。废话少说,进入今天数据重构的主题。 一. 1 //重构2 class Person { 3 var name: String = "" 4 5 init(name: String) { 6

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

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

    2.接下来我们对上面类中的printOwning函数进行分析。上述类可以正常工作,这是肯定的。但是printOwning()函数写的不够好。 其实《周易》其实就是计算机科学中二进制的表象,因为太极生两仪(2进制中的2),两仪生四象(2的平方为4),四象生八卦(4 x 2 = 8),八卦有演变出六十四卦。六十四卦的就是2进制中的0-1排列。 2.接下来就是对Procut类中的getPrice()函数进行分析并重构了。 2.当然重构的手法也特别简单,就是需要将上面的inputVal使用函数的临时变量进行替代即可,下方就是重构后的函数。 ? 下方示例对该函数使用上述那些规则进行重构会比较复杂,此时我们就可以将该函数抽象成一个类。 ? 2.重构的第一步就是将上述discount()函数抽象成Discount类。

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

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

    2.使用Move Method进行重构 首先我们对上述两个类进行分析,观察需要重构的地方。首先第一眼看代码时,较长的charge()函数会让我们看起来些微的不舒服,因为它太长了。 关于这两个函数重构的规则的具体细节请参见《代码重构(一):函数重构规则(Swift版)》中的介绍。下方截图是对BookCustomer类中的charge()函数进行重构后的结果,如下所示: ? 2.使用Extract Class对Employee重构 接下来要做的就是使用Extract Class对Employee进行重构2.使用Hide Delegate进行重构 使用Hide Delegate进行重构的方式是比较简单的,就是在People中封装一个方法,在方法中返回经理的对象即可,这样就隐藏掉了委托关系。 下方的代码段就是对MyTest类使用extension为其扩展一个method2方法,具体如下所示。 ? 今天的博客就先到这儿,后期还会继续更新关于重构的博客。

    1.7K100发布于 2018-01-11
领券