TOP
什么是重构?
描述
重构 (Refactoring) – 对软件(软件)的内部结构进行的更改,使其更容易理解并更快地修改而不改变外部行为。此外,它是通过应用一系列重构来重构软件,而不改变软件的外部行为。
重构的优点:
- 重构改进了软件设计。 随着时间的推移,会对代码进行许多额外的更改,并且软件会随着时间的推移而失去其结构。 结构的损失具有累积效应。代码中的设计越难看到,就越难保留它,并且崩溃得越快。此外,此类更改会导致代码冗余和重复,使系统更难以理解和修改。
- 重构使软件代码更容易理解。
当你需要进行重构时:
- 添加新功能时;
- 当错误被纠正(修复)时;
- 在代码审查期间。
代码中的异味 (Smells Catalog) :
- 代码重复
- 长法
- 大班
- 一长串参数
- 不同的修改
- 射击射击
- 令人羡慕的特征
- 数据块
- 对元素类型的痴迷
- Switch 运营商
- 平行的模仿层次
- 懒人班
- 思辨(理论)团体
- 临时场地
- 消息线程
- 代理人
- 不适当的接近
- 具有不同接口的替代类
- 不完整的库类
- 数据类
- 评论
可能的重构选项
-
Moving Features Between Objects (对象之间传输完整代码):
- Move Method (突出显示方法) – 如果方法太长或包含需要注释的代码,则隔离一个单独的方法。
- Move Field (时间场) – 当另一个类使用该字段比该字段的定义更频繁时执行。
-
Organizing Data (资料时间):
- Encapsulate Field (现场包装) - OOP的主要原则之一是封装或数据隐藏,通过开放数据,对象可以在数据所有者不知情的情况下读取和更改其值,因此,我们将关闭这样的字段并提供访问方法。
- Encapsulate Collection (套装套装) - 课堂上经常有一些模板,集合可以是数组、列表、集合或向量。 getter 方法不返回集合对象本身,因为这将允许客户端在不知道的情况下修改集合的内容。因此,需要将方法返回的值设置为只读,并创建一个添加/删除元素的方法。
-
Composing Methods (提取并组合代码):
- Extract Method (突出显示方法) - 如果有一段代码可以分组,那么将代码放在单独的方法中,方法的名称可以在单独的方法中解释。
- Inline Method (嵌入法) – 有时将方法移至其代码的调用中非常有用,将它们全部放入一个公共方法中,然后以另一种方式将这些方法分开。
- Inline Temp (插入临时变量) – 仅用简单表达式的临时变量替换一次。
- Replace Temp with Query (用计算手机手机手机最机可以) – 当临时变量用于存储表达式的值时使用,在这种情况下,我们将用方法替换表达式,并用新方法替换代码中对该变量的所有引用。
- Split Temporary Variable (分割临时变量) – 如果使用单个临时变量将多个结果分配给不同的结果,则适用(除非它是在循环内的循环中使用的变量,并且它不是用于累积结果的变量)。都为每个属性创建一个单独的变量。
-
Simplifying Conditional Expressions (带这个电影电影电视):
- Decompose Conditional (操作条件符的分解) – 当我们有检查链接的条件(if-then-else)时,我们实现一个单独的方法来替换条件(if)、then 的一部分以及相应的代码段的使用。
- Consolidate Conditional Expression (表达条件的巩固) - 如果多个条件检查给出相同的结果,则需要将所有检查合并到一个条件表达式或方法中。
- Consolidate Duplicate Conditional Fragments (技术以下的安全电影) – 表达式的条件是同一段中的所有分支,您需要将此代码转移到表达式中。
- Remove Control Flag (删除控件标志) – 有一个变量变量承载一系列逻辑表达式的控制标识。我们使用 BREAK 或 RETURN 来会生。
- Replace Conditional with Polymorphism (用多态性优语实方性电影符) – 当行为取决于对象类型的条件时,将执行该行为。