1

我正在研究胖客户端遗留的C++应用程序,这些应用程序有很多与事物的表示面混合的业务逻辑。我想清理一些问题并完全重构代码,因此存在明显的问题分离。我正在寻找MVC或其他合适的设计模式来实现这一目标。重构胖客户端遗留应用程序

我希望得到谁已经走之前,这条道路的人的建议 -

我用MVP或MVC(或其他方式)?

什么是做这种事情的最佳实践(即有用的步骤/检查)?

+0

术语是否从“胖客户端”变为“胖客户端”?还是FAT有其他含义以外的含义? – Ants 2010-05-05 17:16:49

+0

@Ants:在像这样的应用程序中,它一直是“胖”的。你在想我认为的终端? – Thorarin 2010-05-05 17:27:35

+0

GUI实现了哪个框架或工具箱? – 2010-05-05 17:35:18

回答

1

如果MVP对MVC是你的主要问题,你也许可以自由选择。

影响该决定的因素有三个:您以前的经验,对框架/库的支持,以及哪种更适合现有代码库。

在我的epxerience中,这两种模式都适用于C++传统应用程序,例如结婚蛋糕上的猫呕吐物。您的主要挑战将是:

  • 没有破坏任何东西。哎呀,这可能不打破一切
  • 注意到,你实际上是在前进
  • 做与小的变化,不需要某些组件

其余的三个月改写处理遗留应用程序非常通用,与您的问题的细节无关。因为你也有一个通用部分,所以我会把它留在这里。

改写与重构你已经说过你的决定,所以我只是提出了亲重写参数来考虑:如果你有一个明确的规范和理解用户如何使用目前的这个程序,重写可能会更快,更便宜当30%或更多的代码需要更改时。 (这并不意味着“改写一切”,这也可能意味着削减的应用程序只有逻辑,然后在它上面种植了新的表现层)

假设你去重构:

定义你的目标为什么你需要重构应用程序呢?很好的理由可能是要实现很多新功能,表示层需要被替换,或者为了保持理智而需要更多的功能。从这个角度来看,决定需要改变的是什么,并保持现状。

你已经选择了你的目标:MV *。我只想让你从长远的角度考虑客户和代码所有者的好处。

阅读代码。不,真的,请花时间习惯代码库。使用调试器进行调试。尝试理解所涉及的事情。记下你认为你应该改进的改进。

创建测试 - 主要是针对当前期望的行为进行回归测试。使用遗留代码库时,它们通常比手动更不经常,所以创建一个白痴可以遵循的测试协议,并试图抓住一个不经常犯这样的错误,它可以随时运行这些测试。尝试从现有用户获取一些用例。

坚持小的可逆变化如果重构步骤出错,它应该足够小,可以毫不犹豫地被扔掉。有时候,这并不容易,我典型的最坏情况下的步骤是:
- 决定替换哪个功能。制定新代码的外观。 - 移动也适用于新的代码 接口的后面的现有代码 - 测试 - 与替代功能的新代码 - 测试 - 有时,界面是“最终”,somethimes您可以删除/酌减

总是提高不要接受“稍后可以修复”的功能障碍。

0

您应该看看Michael Feathers的“有效地使用遗留代码”。本书概述了如何将现有代码加入测试工具,以及如何安全地破解代码中的依赖关系。