1

我有这个用 C++ Builder 编写的大型程序,严重依赖 VCL 图形库。由于很多原因,我想放弃这个工具。有几个替代编译器可供使用,我对其中任何一个都开放。

我想知道的是如何一步一步地进行实际的移植?有没有人这样做并可以分享他们的经验?

我想第 1 步是将 GUI/VCL 从应用程序中分离出来。无论如何,该程序应该是这样设计的,但遗憾的是它不是。仅此一项就是一项重大项目,但在那之后我该去哪里呢?我是否应该在 .dll 文件中链接 VCL GUI,将它们包含在新编译器中,但如果需要从 Builder 维护它们?

4

3 回答 3

3

我同意您应该将表示层与业务逻辑分开。

如果您正在寻找 VCL 的替代 GUI 框架,您可以考虑Qt。它还附带一个带有UI 设计器的 IDE (因此可与 C++ Builder 相媲美),但具有跨平台和开源的优势。

于 2012-10-30T10:12:15.720 回答
3

我会开始——正如你所说——将表示层与业务逻辑分开。首先在熟悉的 C++ Builder 环境中执行此操作:从应用程序中删除业务逻辑并将其重新创建为一个或多个单独的模块(DLL,在 Windows 上),并更改表示层,以便程序仍然运行但访问这些模块所有业务逻辑操作。

然后您可以在不使用 VCL 的情况下重写应用程序。您可能会坚持使用 C++ 并使用另一个 GUI 库(Qt 肯定是其中一个选项,wxWidgets 也值得一看),或者您可能想要更改表示层的语言(取决于您自己的技能和偏好)。

将业务逻辑移出演示文稿的另一个吸引力在于,它变得更容易测试。

I'd recommend taking a look at Michael Feathers's book Working Effectively with Legacy Code before you start. He gives a good (and very test-based) approach to this sort of refactoring.

于 2012-10-30T11:54:46.727 回答
2

我曾经遇到过同样的情况MFC。我的建议是从头开始,重用旧代码中的任何内容,这次不要用逻辑来混淆演示!;)

于 2012-10-30T11:22:16.547 回答