完整重构实时产品的推荐策略是什么?

pen*_*ake 1 refactoring web-applications

考虑您有"System_A"这是一个Web应用程序.而System_A只有3层:UI,BusinessLayer和数据层.

现在,您希望在作为实时产品工作时对System_A(仅限UI和BusinessLayer)进行广泛的重构.

什么是最安全的策略,重构System_A并在经过良好测试后释放重构产品-let称之为"RF_SystemA" - 即使出现意外错误也可以将其转换为System_A(不强迫用户改变)他们的网址)?

Pét*_*rök 5

首先,您应该有足够的单元测试来覆盖代码的关键部分.(如果UI和业务逻辑分离不好,使逻辑难以测试,您可能需要更多地依赖功能/集成测试,直到您将层分开足以使业务逻辑单元可测试为止.)

除了生产服务器之外,您还应该拥有测试/暂存服务器,测试人员和用户可以验证新代码是否正常运行.

然后,您可以逐步对代码进行小的更改,在每个步骤之后验证所有单元测试是否仍然通过.

在重要的里程碑之后,您将重构的应用程序部署到测试/登台服务器,并运行更大规模的集成/功能/性能/任何其他测试.

如果在所有测试之后,您很高兴并确信代码仍然按预期工作,那么您可以将其部署到生产环境中.

如果在这之后弹出一个错误,您可以轻松返回到生产中的最新安全版本.(之后,你可以开始调查这个漏洞是如何通过的,以及如何避免这种情况再次发生......)