2012-10-30 2 views
2

У меня есть эта большая программа, написанная на C++ Builder, в значительной степени опираясь на графическую библиотеку VCL. По многим причинам я хочу отказаться от этого инструмента. Есть несколько альтернативных компиляторов для перехода, я открыт для любого из них.Как скрыть от C++ Builder?

Что мне интересно, как сделать портирование поэтапно? Кто-нибудь сделал это и мог поделиться своим опытом?

Я бы предположил, что шаг 1 состоит в том, чтобы отделить GUI/VCL от приложения. Программа должна была быть спроектирована так же, но, к сожалению, это не так. Только это крупный проект, но куда я могу пойти после этого? Должен ли я связать VCL GUI в DLL-файлах, включить их в новый компилятор, но при необходимости сохранить их из Builder?

ответ

2

Я бы начал, как вы говорите, путем разделения слоя презентации на бизнес-логику. Начните с этого в знакомой среде C++ Builder: удалите из приложения бизнес-логику и заново создайте ее как один или несколько отдельных модулей (DLL, в Windows) и измените уровень представления, чтобы программа по-прежнему выполнялась, но доступ к этим модулям для все операции бизнес-логики.

Затем вы можете переписать приложение без использования VCL. Вы можете придерживаться C++ и использовать другую графическую библиотеку (Qt - это, безусловно, один из вариантов, wxWidgets тоже стоит посмотреть), или вы можете захотеть изменить язык (в зависимости от ваших собственных навыков и предпочтений) для уровня презентации.

Еще одна привлекательность для перемещения бизнес-логики из презентации заключается в том, что она становится намного легче проверять.

Я бы рекомендовал взглянуть на книгу Майкла Перса Эффективно работать с устаревшим кодом, прежде чем вы начнете. Он дает хороший (и очень основанный на тестах) подход к подобному рефакторингу.

2

Согласен, вы должны отделить уровень презентации от бизнес-логики.

Если вы ищете альтернативный графический интерфейс для VCL, вы можете рассмотреть Qt. Он также поставляется с IDE, который имеет UI designer (что сопоставимо с C++ Builder), но с преимуществами как кросс-платформы, так и с открытым исходным кодом.

+0

Хотя Qt определенно интересен, я в основном спрашиваю, как двигаться, а не куда двигаться (или вопрос может оказаться слишком широким для этого сайта). Однако из любопытства, как бы вы запускали это на платформе Windows? Является ли он автономным или вам нужен компилятор под ним, то есть Mingw или VC++? – Lundin

+0

Похоже, что Qt компилируется с помощью компиляторов MinGW, MSVC и Intel в Windows: http://doc.qt.digia.com/stable/platform-notes-windows.html – mtmacdonald

2

У меня была такая же ситуация с MFC один раз. мой совет начинается с нуля и повторно использует все, что вы можете, из старого кода, и на этот раз не ведите презентацию с логикой! ;)

Смежные вопросы