`
chenguanwei2008
  • 浏览: 121062 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

重构时机和重构方法之间的对应关系

 
阅读更多

ID

需要重构的信号

对应的重构方法

1

出现了重复代码

提取或者重组类

提取或者重组函数、方法

用多态处理子类重复代码

2

两个类耦合太多,太亲密

提取或者重组类,提取或者重组函数方法

3

出现了代码行尺寸极其庞大的类

提取或者重组类

4

没有实际作用的懒惰类

提取或者重组类

5

体积庞大的方法函数

提取或者重组函数方法

6

方法中的长参数列表

提取或者重组函数方法

7

子类中出现相同或相似的方法定义

提取或者重组父类

形成模版方法

用多态处理子类重复代码

8

很难看懂,代码逻辑或者意图表达的不清楚明晰

引入临时变量

提取或者重组函数方法

9

一些不加任何约束的switch语句,或者一大串if/else嵌套

使用围绕if体的多条件返回语句代替嵌套的复杂if/else条件判断

用多态来代替条件判断

10

太多“非常有必要的”注释

将注释转换为代码

11

代码中硬性潜入太多数值

用符号常量定义来代替硬性编码数字嵌入代码

12

类中定义了区分不同类型的类别代码

用多态来代替条件判断

13

太难给类、方法、变量命名时

提取或者重组类

提取或者重组函数方法

14

类中出现了某些变量或者方法有时有用,有时没用

提取或者重组类

用多态处理子类重复代码

分享到:
评论

相关推荐

    重构_改善既有代码的设计

    关于重构,即改善既有代码的设计,这是一个在软件工程中频繁讨论且至关重要的主题。...同时,对于不同技术栈,如Java、C#、Python、数据库、前端等,学习对应的重构技术和最佳实践也是十分必要的。

    科技型中小企业转型业务时机选择.pdf

    1. 应避免在产品市场饱和或技术成熟后转型,因为这将带来较高的重构和转换成本,最佳时机应在市场饱和之前,即t。 2. 转型应选择在能实现利润且不至于亏损的区间,即t,以确保企业能够承受转型带来的成本压力。 3. ...

    Web 前端设计模式--Dom重构 提高显示性能

    总之,通过Dom重构提高Web页面的显示性能,关键在于合理安排元素的加载时机和减少不必要的DOM操作。对于在线印刷网站这类交互性极强的应用来说,这一点尤其重要。通过减少重绘和重排的次数,可以有效避免页面在加载...

    hibernate-3.2.5 java doc

    在Hibernate 3.2.5版本中,API文档详细地阐述了其功能、类库和方法,为开发者提供了宝贵的参考资料。 这篇文档将深入探讨Hibernate 3.2.5的关键特性,包括实体管理、持久化模型、查询语言、事务处理和缓存机制。 1...

    JAVA三十个注意

    合理设计模块,减少不必要的依赖关系,可以使系统更加灵活和易于扩展。 #### 13. 异常捕捉 不要沉默地忽略异常,而应该通过日志记录或用户反馈的方式,让异常得到适当的处理。异常处理是程序健壮性的关键。 #### ...

    无刷电机控制

    3. **过零点检测**:通过将BEMF信号与重构的虚拟中性点进行比较,可以检测到BEMF信号的过零点,这是确定电机换相时机的关键步骤。 4. **择多函数滤波器**:为了减少噪声的影响并提高检测精度,采用择多函数滤波器对...

    spring框架学习

    在Spring中,通过配置文件或注解的方式告诉Spring容器如何创建对象以及它们之间的依赖关系。 - **DI概念**:DI(Dependency Injection,依赖注入)是IoC的一种实现方式。Spring通过DI来管理对象的依赖关系,可以在...

    抖音直播产品营销通案.pdf

    由于所提供的内容是经过OCR扫描的文本片段,并且存在文字识别错误和不连贯的问题,所以在没有原始文档的情况下,很难进行内容的准确重构。不过,我将尽力根据提供的信息和常见的抖音直播产品营销通案内容,构建一个...

    Java第9章 管理类文件含源代码

    这个过程对于理解和优化程序性能至关重要,因为类加载的时机和方式可以影响到程序的启动速度和内存占用。 接着,我们谈谈类路径(ClassPath)。在Java中,类路径决定了JVM在哪里寻找类文件。你可以通过环境变量`...

    回调函数被连续执行两次或多次的原因

    对于上述示例中的`InitializeComponent`方法,可以通过重构代码结构或者改变调用方式来避免重复调用。 4. **使用事件的`RemoveEventHandler`方法**:在不需要时,及时取消事件的预订,防止不必要的回调函数执行。 ...

    Java编程中“为了性能”尽量要做到的一些地方

    创建较大的`HashMap`时,可以通过构造函数显式指定初始容量和负载因子,避免多次哈希表重构带来的性能损失。 #### 13. 尽量减少对变量的重复计算 在循环和其他计算密集型操作中,避免不必要的重复计算可以显著提升...

    VS2008转换VS2005

    首先,我们需要了解VS2008和VS2005之间的主要差异。VS2008引入了.NET Framework 3.5,扩展了.NET Framework 3.0的功能,支持C# 3.0、VB.NET 9.0和C++0x等语言特性。而VS2005则基于.NET Framework 2.0,支持C# 2.0、...

    微信小程序-麻将骰子:附教程.zip

    微信小程序的开发基于一套自己的框架WXML(WeiXin Markup Language)和WXSS(WeiXin Style Sheet),它们分别对应HTML和CSS,用于构建用户界面。同时,JavaScript是微信小程序的主要编程语言,处理业务逻辑和数据...

    单元测试教程

    - **问题:** 使用main()方法进行测试时,可以访问类的私有成员和方法,这可能导致测试结果不可靠。 - **解决方案:** 使用专门的测试框架(如JUnit)来编写测试,以确保测试的可靠性和准确性。 **3.3 缺乏自动测试...

    tdd-examples:Java 中的 TDD 示例

    - **重构的时机**:当测试已经稳定并且理解了代码的功能后,进行重构以优化结构。 总之,"tdd-examples" 项目是一个宝贵的资源,对于想要学习和实践 TDD 的 Java 开发者来说,它可以提供一系列真实的示例,帮助他们...

    AngularJS 实现按需异步加载实例代码

    RequireJS是一个文件和模块加载器,它支持按需加载,帮助管理JavaScript模块之间的依赖关系。通过requireJS,可以实现懒加载,即只在需要时才加载模块,而不是在应用启动时加载所有模块。 6. 优化和重构 在实现了按...

Global site tag (gtag.js) - Google Analytics