Java:重构应用程序的便捷方式

时间:2011-02-21 15:11:53

标签: java jsp servlets java-ee refactoring

我们有一个基于JSP和Servlet的敏捷企业应用程序,没有任何设计策略。

此应用程序建于2002年初,考虑到1000个用户。 2002年之后,我们收到了许多营销合作伙伴的要求。

目前,该应用程序有很多意大利面条代码,包含许多Ifs和elses。一个类有超过20,000行代码,有大量的函数没有抽象。

现在,我们需要支持数十亿条记录, 我们需要立即逐步做什么?

我们必须重构应用程序吗? 我们需要使用哪个框架? 框架的使用如何对最终用户有所帮助? 如何说服领导者进行重构? 与当前系统相比,如何获得更快的响应时间?

5 个答案:

答案 0 :(得分:3)

如果我有合适的公司资源(是的),我会如何处理这个问题:

  1. 在进行重大更改之前,设置自动回归测试,以获得良好的质量保证流程。我不在乎你有多好,你不能把这样的系统放在单元测试下并合理控制回归。
  2. 绘制出相互依赖关系,了解单个类可以作为一个单元进行测试的程度。
  3. 你怎么吃大象?一次咬一口。获取一段必需的功能(最好是围绕增加负载要求的东西)并重构可以单独处理的类或类的部分。
  4. 通过阅读“有效使用旧版代码”来了解上述方法3。

答案 1 :(得分:1)

  

重构应用程序的便捷方式。

没有“方便”或“简单”的方法来重构现有的代码库,特别是如果代码库看起来像意大利面。

  

......我们需要立即逐步完成什么?

如果不了解系统的当前架构,那就无法回答。

  

我们必须重构应用程序吗?

一方面,您拥有大量设计/维护不良的代码这一事实表明它需要一些重构工作。

然而,目前尚不清楚它是否足够。可能是完全重写是一个更好的想法......特别是如果你需要扩展多个数量级。

  

我们需要使用哪个框架?

无法在没有申请细节的情况下回答。

  

框架的使用如何对最终用户有所帮助?

可能会缩短响应时间。它可能会提高可靠性。它可能允许更多在线用户同时进行。它可能没有上述任何一种。

使用框架不会神奇地解决设计不良的问题。

  

如何说服领导者进行重构?

您需要说服他们该项目将带来良好的投资回报(ROV)。您/他们还需要考虑替代方案:

  • 如果您/他们什么都不做,或
  • 会发生什么
  • 是一个完全重写,可能会带来更好的结果。
  

与当前系统相比,如何获得更快的响应时间?

如果不理解为什么当前的系统很慢,就无法回答。


最重要的是,您可能需要来自您所在群体以外的人(例如外部顾问)对您当前的系统进行详细审核并报告您的修复选项。听起来您的管理层不相信您的建议。

答案 2 :(得分:0)

这些都是重大问题。一个答案太宽泛了。

我最好的建议是:从小处开始,如果可以的话。一件一件地重构。最重要的是,在触摸代码之前,针对当前代码库编写自动化测试,这样您就可以相对确定在重构代码时没有破坏任何内容。

可能无法编写这些测试,因为代码可能无法以其当前格式进行测试。但是你仍然应该把这个作为主要目标之一。

答案 3 :(得分:0)

根据定义,重构不应对用户显示任何差异。它只是帮助开发人员处理代码。听起来您想要进行更广泛的重写以使应用程序现代化。转向像JSF这样的东西会让开发人员的生活变得更加轻松,并且可以让您访问Web组件库以改善用户体验。

答案 4 :(得分:0)

这是一个需要冗长答案的问题。首先,我建议应用程序测试良好,并按照规范工作。这意味着有足够的单元,集成和功能测试。功能测试也必须自动化。一旦这些到位,就可以进行一步一步的重构。你有足够的测试开始吗?