重构:对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其理解性,降低其修改成本。
组织方法:
1抽取方法
创建一个新方法,命名以它做什么来命名,而不是怎么做来命名。Example1示例
2方法内联
如果只是简单的委托,可以将方法内联。
注意点:
被子类继承的方法不能内联。Example2示例
3临时变量内联
如果一个临时变量只被简单的表达式赋值一次,就可以将它内联。
如何判定只被赋值一次?将这个临时变量申明为final。
如果是被赋值为一个方法的返回值。一般情况不用内联,除非妨碍了其他重构方法。
4查询取代临时变量
临时变量保存一个表达式的运算结果,可以抽取成一个独立方法(称之为查询),来代替临时变量。Example4示例
5引入解释性变量。
如果有一个复杂的表达式,可以将该表达式中复杂的部分用一个临时变量来显示。
6分解临时变量
如果某个临时变量被赋值超过一次,而且它不是循环变量也不是表示一个整个方法都要使用的值。可以将它分解成好几个临时变量。Example6示例
7去除对参数的赋值
JAVA中只采用值传递方式,因此对参数赋值会造成困惑。JAVA的方法参数表明被传递进来的东西,可以让代码清晰。Example7示例
8方法对象取代方法
如果某个对象的一个方法很长,拥有很多局部变量。可以新建一个对象,将这个长方法放入新对象,将方法的所有局部变量变成新对象的类变量。并且在这个类中将这个长方法分解成很多小而短的方法。
移动对象特性
10移动方法
如果一个类中一个方法和另外一个类的调用,被调用更频繁,那么把这个方法放入另外那个类中。Example1示例
如果一个类中一个类变量和另外一个类的调用,被调用更频繁,那么把这个类变量放入另外那个类中。Example2示例
12抽取类
一个类做了两个类的工作。新建一个类,将原来类中某些类变量和方法移植到新类来。Example3示例
13内联类
加入一个类中特性太少,可以将它和另外一个类合并。Example4示例
重组织数据
22对象取代数组
如果一个数组中包含不同东西,则转化为对象。Example1示例
26替换魔法数
用一个常量替代有特别含义的数字或者字符串变量。Example2示例
27封装类变量
类变量最好不要设为public类型,设置为private,然后设置setter,getter方法为public
Example3示例
28封装集合类型
集合类型的getter方法不要返回集合对象,这样可以修改集合对象内容而创建者一无所知。所以确认getter方法返回的是不可更改的集合对象(只读),再增加对集合对象添加,删除元素的方法。Example4
简化表达式
34分解表达式
如果有一个复杂的if,else语句,可以将各个条件执行的代码抽取成独立的方法。
Example1示例
35合并表达式
如果有一些if语句返回结果相同,则可以用||和&&将这些if合并成一个if语句。Example2示例
36合并重复条件
如果if和else语句中有相同重复的代码,请将这些代码移出if,else语句。
Example3示例
37去除控制标记
if,else语句中如果某个变量有控制标记,用break或者return替代这个变量
Example4示例
38用检测语句代替嵌套条件
如果If,else语句太多,则代码复杂度会很高,使用检测语句来替代,检测语句要么返回一个实际的值,要么就抛出异常。Example5示例
39用多态代替条件表达式。
Switch case表达式可以使用多态来替代。
将包含switch case语句的方法转变成抽象方法,对于每个case,建立子类方法来实现。Example6示例
简化方法调用
42方法重命名
如果一个方法名字不能清晰表单含义,可以改成另外一个名字。Example1示例
43添加方法参数
往一个方法里添加参数。
必需注意的是,在添加之前想清楚是否真的是需要这个参数。Example2示例
44去除方法参数
把方法里不必要的参数去除掉。Example3示例
45将查询和修改分开
根据单一职责原则,一个方法只能做一件事情,因此方法里既有返回查询数据又有对数据的修改时候,我们要将这个方法分成两个方法。Example4示例
46参数化方法
如果两个方法或者两段代码只有部分代码不同,大部分代码都相同。那么可以将这两个方法或代码统一成一个方法,将不同部分作为统一方法的参数。Example5示例
47用明确方法代替参数
如果某个方法中某个参数的每一个可能值都会有相应的操作。则应该针对每一种操作创建独立的方法来实现。Example6示例
48保持对象完整
如果某一方法的几个参数都是同一个对象中的成员变量,则可以将这个对象作为方法参数传入。
优点:
1. 这个对象中新增某一成员变量也需要作为参数传入这个方法,如果是用把对象作为参数,则不需要更改这个方法的参数。否则你要将这个方法的参数增加一个新的参数。
2. 方法参数最好不要太多,使用这个重构操作就是为了减少方法的参数个数。
Example7示例
处理泛化
57上移类成员变量
如果一个类的两个子类中有相同的成员变量,则可以将这个成员变量上移到他们的父类中去。Example1示例
58上移方法
如果一个类的两个子类中有相同的方法或者返回类型相同,做同一件事情,则可以将这个方法上移到他们的父类中去。Example2示例
60下移方法
如果父类中某个方法只与部分子类有关,则将这一方法下移到子类中去。
61下移类变量
同理,父类中某一成员变量只与部分子类有关,则将这一变量下移到子类中去。
Eclipse重构快捷键一览
Alt+Shift+T 打开重构菜单
Alt+Shift+R 方法,变量重命名
Alt+Shift+V 方法,变量移动
Alt+Shift+I 方法,变量内联
Alt+Shift+M 抽取方法
Alt+Shift+L 抽取局部变量
Alt+Shift+C 改变方法参数
相关推荐
在这个"代码重构总结实例"中,我们将探讨一系列相关知识点,包括重构的原因、原则、方法以及相关的工具和实践。 1. **重构的原因**: - 代码异味:当代码出现冗余、复杂度过高或可读性差等问题时,重构有助于消除...
### Java代码重构经验总结 在软件开发过程中,代码重构是一项重要的技能,它旨在不改变代码外部行为的前提下,改进其内部结构,从而提升代码质量和可维护性。本文将深入探讨Java代码重构的关键点,涵盖重构原则、...
**代码重构** 代码重构是软件开发过程中的一个重要环节,它是指在不改变代码外在行为的前提下,对代码结构、设计和实现进行改进,以提高代码的可读性、可维护性和内部结构。重构的主要目标是使软件更容易理解和修改...
### 软件工程中的代码重构技术 #### 第1章:简介 **1.1 什么是代码重构** 代码重构是一种软件工程活动,旨在不改变软件的外部行为的情况下,改进其内部结构和设计。这一过程有助于增强代码的质量和可维护性。 **...
本文总结了 Java 代码重构的经验和技术规范,包括重构要求、重构的工作、代码的坏味道和异常处理。 重构要求 在进行代码重构时,需要遵守以下要求: 1. 安全第一,确保关键部分的代码正确无误,先做出 demo,各...
综上所述,《从Java到Kotlin:重构指南》是一本非常适合Java开发者学习Kotlin并进行代码重构的专业书籍。它不仅提供了丰富的理论知识,还有大量的实践案例供读者参考,是从事软件开发工作的专业人士不可多得的宝贵...
总结起来,代码重构是一种主动优化代码的策略,旨在提升代码的可读性、可维护性和设计质量,而不影响原有功能。通过学习和应用各种重构技术,开发者可以更好地管理复杂性,提高软件的健壮性和可扩展性。"重构——...
《C#代码重构31法》是对C#编程实践中提高代码质量、可读性和可维护性的31种重构技术的总结。这些重构方法旨在优化代码结构,减少冗余,提高效率,同时也使得代码更加模块化,易于理解和测试。以下是部分重构方法的...
重构可以应用于很多层面,包括但不限于将方法提取到新的函数中、将代码上下移动于不同的类或继承体系中、甚至是将代码重构到新的语句下。 书中还提供了许多实际例子,帮助读者理解重构的应用,每个重构步骤都伴随着...
代码审核和代码重构是软件开发过程中的两个关键环节,它们对于提高代码质量、维护性和团队协作至关重要。 代码审核是一种质量保证活动,通过同行评审来发现潜在的错误、不合理的设计和不符合编码规范的部分。代码...
通过对代码规范相关的三本书《重构,改善代码的既有设计》、《代码整洁之道》、《阿里巴巴Java开发手册》,抽取了重要成分,对代码优化重构思路的一次总结
总结来说,C#代码重构是一项专业开发者必须掌握的技能。通过封装集合,我们能够保护数据安全并遵循最小权限原则;通过移动方法,我们能够优化类的设计并降低耦合度。掌握这些重构策略,可以帮助开发人员在保持业务...
这些方法是多年来软件开发者在实际工作中逐渐总结出来的经验,目的是为了在不改变系统外部行为的前提下,优化代码结构,提高代码质量。这些重构技术的目的是让已经存在的、可能因缺乏设计而效率低下、难以维护和扩展...
总结来说,代码重构是提高Python项目质量和可维护性的关键步骤。通过实施上述建议,可以使得代码更加整洁、高效,同时也有利于团队协作和长期的项目维护。在实际开发过程中,我们应该不断实践和学习代码重构技巧,...
总结来说,这次重构成功地解决了原始代码的混乱,提高了页面加载速度,并为未来的功能扩展打下了坚实的基础。通过合理的代码组织和性能优化,提升了用户在视频频道页面浏览的体验,同时也降低了开发和维护的成本。这...
"Refactoring.txt"可能包含了作者在阅读过程中整理的重构清单,这份清单是对书中重构手法的总结和提炼,对于开发者来说,是一份非常实用的参考资料。你可以根据这个清单在自己的项目中逐步实践,逐步提高代码质量。 ...
总结来说,Python代码重构的目标是提高代码的清晰度、可维护性和性能。通过解决代码冗余、命名规范、长函数、代码耦合、缺乏测试以及性能问题,可以显著提升代码质量。重构是一个持续的过程,需要开发者不断审查、...