我们有一个基于JSP和Servlet的敏捷企业应用程序,没有任何设计策略。
此应用程序建于2002年初,考虑到1000个用户。 2002年之后,我们收到了许多营销合作伙伴的要求。
目前,该应用程序有很多意大利面条代码,包含许多Ifs和elses。一个类有超过20,000行代码,有大量的函数没有抽象。
现在,我们需要支持数十亿条记录, 我们需要立即逐步做什么?
我们必须重构应用程序吗? 我们需要使用哪个框架? 框架的使用如何对最终用户有所帮助? 如何说服领导者进行重构? 与当前系统相比,如何获得更快的响应时间?
答案 0 :(得分:3)
如果我有合适的公司资源(是的),我会如何处理这个问题:
答案 1 :(得分:1)
重构应用程序的便捷方式。
没有“方便”或“简单”的方法来重构现有的代码库,特别是如果代码库看起来像意大利面。
......我们需要立即逐步完成什么?
如果不了解系统的当前架构,那就无法回答。
我们必须重构应用程序吗?
一方面,您拥有大量设计/维护不良的代码这一事实表明它需要一些重构工作。
然而,目前尚不清楚它是否足够。可能是完全重写是一个更好的想法......特别是如果你需要扩展多个数量级。
我们需要使用哪个框架?
无法在没有申请细节的情况下回答。
框架的使用如何对最终用户有所帮助?
可能会缩短响应时间。它可能会提高可靠性。它可能允许更多在线用户同时进行。它可能没有上述任何一种。
使用框架不会神奇地解决设计不良的问题。
如何说服领导者进行重构?
您需要说服他们该项目将带来良好的投资回报(ROV)。您/他们还需要考虑替代方案:
与当前系统相比,如何获得更快的响应时间?
如果不理解为什么当前的系统很慢,就无法回答。
最重要的是,您可能需要来自您所在群体以外的人(例如外部顾问)对您当前的系统进行详细审核并报告您的修复选项。听起来您的管理层不相信您的建议。
答案 2 :(得分:0)
这些都是重大问题。一个答案太宽泛了。
我最好的建议是:从小处开始,如果可以的话。一件一件地重构。最重要的是,在触摸代码之前,针对当前代码库编写自动化测试,这样您就可以相对确定在重构代码时没有破坏任何内容。
可能无法编写这些测试,因为代码可能无法以其当前格式进行测试。但是你仍然应该把这个作为主要目标之一。
答案 3 :(得分:0)
根据定义,重构不应对用户显示任何差异。它只是帮助开发人员处理代码。听起来您想要进行更广泛的重写以使应用程序现代化。转向像JSF这样的东西会让开发人员的生活变得更加轻松,并且可以让您访问Web组件库以改善用户体验。
答案 4 :(得分:0)
这是一个需要冗长答案的问题。首先,我建议应用程序测试良好,并按照规范工作。这意味着有足够的单元,集成和功能测试。功能测试也必须自动化。一旦这些到位,就可以进行一步一步的重构。你有足够的测试开始吗?