java - 清理大型遗留 Java 项目

标签 java refactoring formatting legacy code-structure

我被分配在一个巨大的 Java 项目上做一些工作,开发人员多次迭代的影响是显而易见的。没有标准的编码风格、格式、命名约定或类结构。当我遇到一个使用 Javadoc 的类(class)时,这是一个美好的一天,而单元测试是一个快乐的白日梦。

到目前为止,我们这些参与该项目的人一直在“融入”,适应我们正在从事的任何类(class)的现有惯例,但现在是时候强加一些秩序和一致性了。

这是一项艰巨的挑战,我正在寻找人们对此类任务的任何建议。是否有任何特别有效的策略或需要注意的陷阱?尝试一下是不是个好主意?

编辑补充:我不想给人留下这个项目很糟糕的印象——它实际上设计得很扎实,而且大部分写得很好。它只是感觉它的年龄和维护的必然性......

最佳答案

我发现 Eclipse 对于此类操作来说是一个非常强大的工具。

很多人对命令行工具和基于模式的文本编辑器发誓进行编程,但使用完整的 IDE 进行重大重构有很大的优势:

  • 自动、实时编译会在错误发生时以及发生的任何地方向您显示错误。仅仅因为您进行了更改并且类(class)中没有任何内容或立即打包中断并不意味着您没有在其他地方创建问题。在 Eclipse 中,红旗会在包树上向上引导您直接找到它们。
  • 基于图形的重命名和移动。重命名代码元素的影响可能比您所知道的要大得多。 Eclipse 将向您显示相关元素的每个实例的详细信息以及如何通过重命名对其进行更改。
  • 自动导入管理让您无需处理确保所有导入井井有条的工作。 Eclipse 会在使用时自动添加导入,并用 Action 灯泡标记未使用的导入,以便一键删除。
  • 使用代码样式确保所有源文件对所有内容都使用相同的格式。空格、缩进、换行、括号都可以为您设置格式。这适用于您创建新代码以及更新现有文件。

除了 Eclipse 的工具集之外,您还可以考虑利用其他现代 Java 工具来确保您的代码始终正常运行。

  • 测试套件可让您不断确保所做的任何更改都不会对项目的功能产生负面影响。如果你要重构一个特性,写两三个测试用例来演示它的工作方式。确保它们在任何更改之前和之后运行。这是在问题成为问题之前发现问题的最简单方法。
  • 使用 Maven 等工具来协助处理依赖关系、测试、编译和部署。不要再浪费时间做任何上述任务。专注于编写完成工作的代码。

编辑:

我个人也更喜欢 Eclipse,因为我是负责重构的人,而不是对我的代码几乎一无所知的自动化工具。

关于java - 清理大型遗留 Java 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3971224/

相关文章:

java - 无需等待超时即可检查设备是否有 snmp 对象?

java - Maven 多模块项目中的 JUnit 测试抛出 NoClassDefFoundError

javascript - 输入格式 jQuery

html - 动态生成的 HTML 的格式 - 没人关心吗?

java - 在 Play 2.3 Java 中使用 securesocial 保存用户数据

java - 如何访问二维数组的第二部分

java - 重构帮助...基于属性的对象或大量成员字段?

ruby-on-rails - 如何重构多个模型中出现的方法?

python 绳 : How to Find all missing imports and errors in all sub modules refactoring

r - 在 R 中的情节图例中有小节?