Как разделить большой проект MFC на более мелкие - PullRequest
0 голосов
/ 17 ноября 2009

У нас есть большое решение MFC / C ++ Visual Studio 2005, которое в настоящее время состоит из двух проектов:

  • Код (около 1500 .h / .cpp файлов, динамически связанных с MFC)
  • Resource DLL (мы переводим ресурсы с помощью внешнего инструмента)

Какие у нас есть варианты (lib, dll, ...)? С чего начать? Есть ли технический образец этого или учебник (я не смог ничего найти)?

PS: У нас пока нет опыта создания dll и / или библиотек на C ++ / Visual Studio, поэтому любые советы по началу работы приветствуются.

Ответы [ 4 ]

0 голосов
/ 17 ноября 2009

Ясно, что нет универсального ответа на ваш вопрос.

Сначала вам нужно создать простую программу, используя DLL или статически связанные библиотеки (просто в качестве упражнения). Прежде чем вы узнаете, как создать такое приложение с нуля, не рекомендуется пытаться фрагментировать реальный проект. Есть несколько учебных пособий по MS здесь и здесь для статических библиотек и DLL соответственно.

После этого вы можете подать заявку. Сначала попытайтесь понять структуру вашего проекта. В идеале вы сможете разобраться в части графического интерфейса, бизнес-логике и серверной части.

Самым простым, как правило, является GUI (поскольку бизнес-логика часто переплетается с бэкэндом, мой прогноз, вам будет трудно разделить эти два). Переместите все файлы, которые управляют GUI (диалоги, пользовательские обработчики событий и т. Д.) В отдельную DLL. Как только GUI отделен, посмотрите на остальное. По моему опыту, следующее, что нужно сделать, это отделить утилиты, которые используются повсеместно в вашем приложении, но на самом деле не зависят от состояния приложения (или предоставляются с соответствующим состоянием при каждом вызове). При этом вы многое узнаете об остальной части проекта, надеюсь, достаточно, чтобы фрагментировать его еще дальше. Процесс пошаговый и нет волшебной палочки. К сожалению.

0 голосов
/ 17 ноября 2009

Вы можете удалить все управление библиотекой ресурсов с помощью appTranslator : инструмент отслеживает все переводы в своем файле проекта и создает библиотеки ресурсов для вас. Одним из преимуществ является то, что вам не нужно управлять всеми переведенными файлами .rc и связанными проектами ресурсов DLL в Visual Studio.

Отказ от ответственности: я являюсь автором приложенияTranslator.

0 голосов
/ 17 ноября 2009

Это очень сильно зависит от качества вашей кодовой базы. Если у вас есть хорошо инкапсулированные классы / компоненты, которые взаимодействуют через четко определенные интерфейсы, их не должно быть сложно разделить на разные проекты. Кроме того, прежде чем начать, подумайте, чего вы хотите достичь. Существуют ли повторно используемые или зависящие от платформы компоненты в системе, которые вы хотите изолировать? В моем отделе мы написали набор мастеров Visual C ++ 2005, которые гарантируют, что все вновь созданные проекты соответствуют определенной структуре каталогов и организации (например, мы можем автоматически создавать проекты модульного тестирования для наших библиотек). Мы также используем их, чтобы убедиться, что повторно используемые компоненты могут быть включены через внешние SVN, что действительно экономит много работы.

Итак, прежде чем смотреть дальше, убедитесь, что вы правильно выполнили свои требования.

0 голосов
/ 17 ноября 2009

MFC это или нет, вы должны начать с извлечения бизнес-логики из обработчиков GUI. Сделав это, вы можете поместить их в алиб.

...