前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >代码重构的方法

代码重构的方法

作者头像
Clive
发布于 2018-06-14 07:27:14
发布于 2018-06-14 07:27:14
7320
举报
文章被收录于专栏:Clive的技术分享Clive的技术分享
  1. Add Parameter
  2. Change Bidirectional Association to Undirectional
  3. Change Reference to Value
  4. Change Undirectional Association to Bidirectional
  5. Change Value to Reference
  6. Collapse Hierarchy
  7. Consolidate Conditional Expression
  8. Consolidate Duplicate Conditional Fragments
  9. Convert Procedural Design to Objects
  10. Decompose Conditional
  11. Duplicate Observed Data
  12. Encapsulate Collection
  13. Encapsulate Downcast
  14. Encapsulate Field
  15. Extract Class
  16. Extract Hierarchy
  17. Extract Interface
  18. Extract Method
  19. Extract Subclass
  20. Extract Superclass
  21. Form Template Method
  22. Hide Delegate
  23. Hide Method
  24. Inline Class
  25. Inline Method
  26. Inline Temp
  27. Introduce Assertion
  28. Introduce Explaining Variable
  29. Introduce Foreign Method
  30. Introduce Local Extension
  31. Introduce Null Object
  32. Introduce Parameter Object
  33. Move Field
  34. Move Method
  35. Parameterize Method
  36. Preserve Whole Object
  37. Pull Up Constructor Body
  38. Pull Up Field
  39. Pull Up Method
  40. Push Down Field
  41. Push Down Method
  42. Remove Assignments to Parameters
  43. Remove Control Flag
  44. Remove Middle Man
  45. Remove Setting Method
  46. Rename Method
  47. Replace Array with Object
  48. Replace Conditional with Polymorphism
  49. Replace Constructor with Factory Method
  50. Replace Data Value with Object
  51. Replace Delegation with Inheritance
  52. Replace Error Code with Exception
  53. Replace Exception with Test
  54. Replace Inheritance with Delegation
  55. Replace Magic Number with Symbolic Constant
  56. Replace Method with Method Object
  57. Replace Nested Conditional with Guard Clauses
  58. Replace Parameter with Explicit Methods
  59. Replace Parameter with Methods
  60. Replace Record with Data Class
  61. Replace Subclass with Fields
  62. Replace Temp with Query
  63. Replace Type Code with Class
  64. Replace Type Code with State/Strategy
  65. Replace Type Code with Subclasses
  66. Self Encapsulate Field
  67. Separate Domain from Presentation
  68. Separate Query from Modifier
  69. Split Temporary Variable
  70. Substitute Algorithm
  71. Tease Apart Inheritance
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.05.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
重构全面总结
《重构》为我们带来了一种改进代码的高效过程,从而彻底改变了面向对象设计的方式:
黄规速
2022/04/14
3620
《重构-代码整洁之道TypeScript版》第一天
看到这个标题你的脑海中一定会浮现出两本书,一本就是,《重构--改善既有代码设计》 和 《代码整洁之道》 。这确实是两本非常伟大的图书,但是很遗憾里面提供的 code 都是 Java 的版本。《重构--改善既有代码设计》 的第2版提供了 JavaScript 的版本,已经非常方便我们前端同学阅读了,但是在 TypeScrip 如此火热的今天,缺了 TS 的版本,始终觉得是些遗憾,所以老袁打算每天拿出一些时间将一些非常经典的案例,结合老袁十年的经验总结到一块使用 TS 重写,希望能陪伴各位的技术成长之路,我会从大致如下方向跟各位共同分享:
疯狂的技术宅
2020/08/04
1.1K0
《重构-代码整洁之道TypeScript版》第3天
---- 今天让我们来继续第3天,老规矩先来回顾一下昨天我们都实现了哪些: Change Reference to Value(将引用对象改为值对象) Change Value to Referenc
疯狂的技术宅
2020/08/04
6090
《重构-代码整洁之道TypeScript版》第2天
---- 昨天我们发了第一篇,今天让我们来继续第二天。先来回顾一下昨天我们都实现了哪些: Add Parameter(添加参数) Change Bidirectional Association to
疯狂的技术宅
2020/08/04
6890
读《重构:改善既有代码的设计》
一个项目运行久了,经过业务需求的迭代,开发人员的变更,总会产生一些质量不高的代码,要么来源于对某些业务理解的不太深,要么来源于对一些紧急变更的后遗症,往往遇到这种情况,我们会适时的引入重构,避免破窗效应,让一个项目越来越杂乱。 重构其实不仅可以重新梳理下我们的业务场景,梳理我们代码的逻辑,让其更贴合业务,更重要的是可以让开发人员有机会再次设计我们的系统,结合一些更好的开源项目和技术,提升团队的技术氛围。 每一次重构其实对于一个项目来说都是无比艰难的决定,上有新业务的需求,下有重构的使命,时间紧
高广超
2018/12/12
6840
《重构-代码整洁之道TypeScript版》第4天
---- 今天让我们来继续第4天,老规矩先来回顾一下昨天我们都实现了哪些: Consolidate Conditional Expression(合并条件表达式) Consolidate Duplic
疯狂的技术宅
2020/08/04
4280
[转] Agile Software Development 敏捷软件开发
  敏捷开发是一种软件开发方法,基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作。
Edison Zhou
2018/08/20
7010
[转] Agile Software Development 敏捷软件开发
BookNote: Refactoring - Improving the Design of Existing Code
BookNote: Refactoring - Improving the Design of Existing Code From "Refactoring - Improving the Design of Existing Code" by Martin Flower. BookNote: Refactoring - Improving the Design of Existing Code Duplicated Code Long Method Large Class Long Paramet
绿巨人
2018/05/18
9250
如何解决代码腐败的味道
一. Duplicated Code(重复代码) 如果你在一个以上的地点看到相同的程序结构,设法将他们合而为一,程序会变得更好。 同一个类的两个函数含有相同的表达式,采用Extract Method(提炼函数)提炼出重复的代码。 两个互为兄弟的子类含有相同的表达式,首先对两个类都使用Extract Method(提炼函数),然后再对提炼出来的代码使用Pull Up Method(函数上移),将它推入超类。 如果代码之间只是类似,并非完全相同,运用Extract Method(提炼函数)将相似部分和差异部
微观技术
2020/08/20
8780
重构-改善既有代码的设计:坏代码的味道,编写代码20多宗罪(三)
如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将它们和而为一,程序会变得更好。最常见的“重复代码”就是一个类内的两个函数含有相同的表达式。另一种常见情况就是两个互为兄弟的子类内含有相同的表达式。   1)同一个类的2个函数含有相同的表达式,这时可以采用Extract Method(提炼函数)提炼出重复的代码,然后让这2个地点都调用被提炼出来的那段代码。   2)两个互为兄弟的子类内含相同表达式,只需对2个类都是用Extract Method(提炼函数),然后对被提炼出来的函数是用Pull Up Method (方法上移) ,将它推入超类。如果代码之间只是类似, 并非完全相同,那么就得运用Extract Method(提炼函数 将相似部分和差异部分隔开,构成单独一个的函数。然后你可能发现可以运用Form Template Method (塑造模板函数)获得一个 Template Method设计模式。如果有些函数以不同的算法做相同的事,你可以选择其中较清晰地一个,并是用 Substitute Algorithm (替换算法)将其他函数的算法替换掉。   如果2个毫不相关的类出现 重复代码,你应该考虑对其中一个运用 Extract Class (提炼类),将重复代码提炼到一个独立类中,然后在另一个类内使用这个新类。但是,重复代码所在的函数可能只应该属于某个类,另一个类只能调用它,抑或这个函数可能属于第三个类,而另2个类应该引用这第三个类。你必须决定这个函数放在哪儿最合适,并确保它被安置后就不会再在其他任何地方出现。
黄规速
2022/04/14
6580
重构-改善既有代码的设计:坏代码的味道,编写代码20多宗罪(三)
重构·改善既有代码的设计.04之重构手法(下)完结
本文是代码重构系列的最后一篇啦。前面三篇《重构·改善既有代码的设计.01之入门基础》、《重构·改善既有代码的设计.02之代码的“坏味道”》、《重构·改善既有代码的设计.03之重构手法(上)》介绍了基础入门,代码异味,还有部分重构手法。今天继续总结重构手法下篇,从条件表达式、函数调用、以及类继承关系上阐述了各种重构手法,希望对项目能有所帮助。另外本文更新后该系列就完结了,感谢各位看官的指点。
有一只柴犬
2024/01/25
2130
重构·改善既有代码的设计.04之重构手法(下)完结
重构·改善既有代码的设计.03之重构手法(上)
之前的重构系列中,介绍了书中提到的重构基础,以及识别代码的坏味道。今天继续第三更,讲述那些重构手法(上)。看看哪些手法对你的项目能有所帮助…
有一只柴犬
2024/01/25
1620
重构·改善既有代码的设计.03之重构手法(上)
【重构】 代码的坏味道总结 Bad Smell (一) (重复代码 | 过长函数 | 过大的类 | 过长参数列 | 发散式变化 | 霰弹式修改)
膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 .
韩曙亮
2023/03/27
8210
3.1.Intellij IDEA 中英文 汉化对照
--Find Next/Move to Next Occureence(查找下一个/移动到下一个出现位置)
itjim
2019/11/22
3.6K0
3.1.Intellij IDEA 中英文 汉化对照
代码重构(五):继承关系重构规则
陆陆续续的发表了多篇关于重构的文章了,还是那句话,重构是一个项目迭代开发中必不可少的一个阶段。其实重构伴随着你的项目的整个阶段。在前几篇关于重构的文章中我们谈到了函数的重构、类的重构、数据的重构以及条件表达式的重构,那么今天咱们就来聊聊继承关系的重构。当然还是延续前几篇博客的风格,我们在博客中的代码实例依然使用Swift语言来实现,当然还是那句话,使用什么语言无所谓,关键是看重构的场景以及重构的思想。 “重构”不仅仅可以改善你既有的代码设计,还可以改变你组织代码的思路,使你的程序在设计之初就趋于合理化,利于
lizelu
2018/01/11
14.5K0
代码重构(五):继承关系重构规则
Java开发中存在这样的代码,反而影响整体整洁和可读性
许多编程技术都建立在库类的基础上。库类的作者没用未卜先知的能力,不能因此责怪他们。麻烦的是库往往构造的不够好,而且往往不可能让我们修改其中的类以满足我们的需要。
李红
2019/05/29
5100
重构-改善既有代码的设计:重新组织数据的16种方法(六)
间接访问类的属性:你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙。为这个字段建立取值/设值函数,并且只以这些函数来访问字段。
黄规速
2022/04/14
6550
重构-改善既有代码的设计:重新组织数据的16种方法(六)
IDEA快捷键拆解系列(八):Refactor篇
  以下是关于Refactor导航项及其每一子项的拆解介绍,其中,加粗部分的选项是博主认为比较重要的。
happyJared
2018/09/20
8820
重构-改善既有代码的设计:处理概括关系 (九)
如果各子类是分别开发的,或者是在重构过程中组合起来的,你常会发现它们拥有重复特性,特别是字段更容易重复。这样的字段有时拥有相似的名字,但也并非绝对如此。判断若干字段是否重复,唯一的办法就是观察函数如何使用它们。如果它们被使用的方式很相似,你就可以将它们归纳到超类去。
黄规速
2022/04/14
5000
重构-改善既有代码的设计:处理概括关系 (九)
代码重构(二):类重构规则
在上篇博客《代码重构(一):函数重构规则(Swift版)》中,详细的介绍了函数的重构规则,其中主要包括:Extract Method, Inline Method, Inline Temp, Replace Temp with Query, Introduce Explaining Variable, Split Temporary Variable, Remove Assignments to Parameters, Replace Method with Method Object等。关于上述这些函数重
lizelu
2018/01/11
1.4K0
代码重构(二):类重构规则
推荐阅读
相关推荐
重构全面总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档