如何有效地重构遗留代码?

zih*_*oyu 6 java refactoring

可能的重复:
为了重构庞大的代码库,我应该记住什么?
何时(如果有的话)废弃生产代码并重新开始?

我目前正在处理一些遗留的源代码文件.它们有很多问题,因为它们是由一位对Java知之甚少的数据库专家编写的.例如,

  1. 类中的字段是公共的.没有吸气剂和二传手.
  2. 使用原始类型,而不是参数化类型.
  3. static不必要地使用.
  4. 超长方法名称.
  5. 方法需要太多参数.
  6. 经常重复自己.

我想修改它们,使它们更加面向对象.什么是最佳实践和有效/高效的方法?

Jon*_*eet 8

阅读Michael Feathers的" 有效使用遗留代码 ".伟大的书 - 显然它将比这里的答案更详细.它有很多合理处理方法的技巧.

看起来您已经确定了许多问题,这是问题的很大一部分.其中许多听起来像是可以相对容易地修复 - 当然,它的整体设计和架构更难做到.

是否已经进行了单元测试,或者您是否也会添加它们?

  • 尝试在进行代码更改之前编写一些测试,尽管您可能必须首先重构一下,如本强烈推荐的书中所述. (3认同)

Ste*_*n C 5

在开始之前,请为应用程序创建系统级回归测试套件.您需要这样做,以便您可以验证您的更改不会破坏.

要进行重构,您需要使用良好的IDE和文本搜索工具(例如grep)的组合.使用文本搜索工具查找要修复的"综合症"的出现,然后使用IDE(及其内置重构功能)来修复实例...一次一个.

例如,Eclipse允许您重命名方法或类,或生成getter和setter.所以你通过以下方式治愈'公共'属性:

  1. 将属性更改为私有.
  2. 生成getter和setter方法.
  3. 保存文件.
  4. 查看属性现在是私有的所有Java编译错误,并根据需要更改为使用getter或setter.

这种方法将为您带来低调的成果.更基本的设计问题更加困难,如果没有对应用程序进行根本重组,可能无法修复.重构功能将帮助您执行此类更改,但决定做什么最终取决于您.

最后,我的建议是不要太野心勃勃.进行渐进式改进,并准备在代码"足够好"时绘制线条.你不会达到完美......即使你从干净的石板开始......所以不要把你的期望设定得很高.


归档时间:

查看次数:

4200 次

最近记录:

15 年,5 月 前