我有一个用 C++ Builder 编写的大型程序,严重依赖 VCL 图形库。由于很多原因,我想放弃这个工具。有几个可供选择的编译器可供选择,我对其中任何一个都持开放态度。
我想知道如何一步一步地进行实际移植?有没有人这样做过并可以分享他们的经验?
我认为第 1 步是将 GUI/VCL 从应用程序中分离出来。程序无论如何都应该设计成那样,但遗憾的是事实并非如此。仅此一项就是一个重大项目,但在那之后我该去哪里呢?我是否应该在 .dll 文件中链接 VCL GUI,将它们包含在新的编译器中,但在需要时从 Builder 维护它们?
最佳答案
正如您所说,我将从将表示层与业务逻辑分离开始。首先在熟悉的 C++ Builder 环境中执行此操作:从应用程序中删除业务逻辑并将其重新创建为一个或多个单独的模块(DLL,在 Windows 上),并更改表示层以便程序仍然运行但访问这些模块用于所有业务逻辑操作。
然后您可以在不使用 VCL 的情况下重写应用程序。您可能坚持使用 C++ 并使用另一个 GUI 库(Qt 当然是其中一个选项,wxWidgets 也值得一看)或者您可能想要更改表示层的语言(取决于您自己的技能和偏好)。
将业务逻辑移出表示的另一个吸引力是它变得更容易测试。
我建议您在开始之前先阅读 Michael Feathers 的书有效地使用遗留代码。他为这种重构提供了一个很好的(并且非常基于测试的)方法。
关于c++ - 如何从 C++ Builder 移植?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13136690/