Два в основном одного и того же кода, как я могу их объединить? - PullRequest
1 голос
/ 06 июля 2010

Прежде всего, эта тема не о системах контроля версий. Мы используем контроль версий :), но пока это не по теме.

У нас был какой-то средний проект, написанный на Java. Позже нам понадобится нечто почти идентичное, но на платформе JavaFX. Поэтому вместо того, чтобы писать с нуля, мы использовали нашу ранее кодовую базу и изменили необходимые части, чтобы она работала на JavaFX. Это было непростое задание, я не советую, если это не единственный способ ... Но это все равно делается.

Моя проблема в том, что теперь у нас есть две отдельные кодовые базы, которые идентичны на 80% - 90%, и обе находятся в активной разработке. Поэтому, когда мы добавляем новую функцию / исправление ошибки к одной, нужно исправить другую.

Как я могу реорганизовать те проекты, чтобы идентичные части могли управляться из одного места. А также мне нужно свободно соединять идентичные - разные части.

Спасибо.

1 Ответ

1 голос
/ 06 июля 2010

Я бы начал с разделения кода на три отдельных модуля (например, по одному модулю на проект):

  • Пользовательский интерфейс JavaFX
  • Пользовательский интерфейс Java
  • Приложениебиблиотеки

Два пользовательских интерфейса уже должны быть отдельными потоками разработки.

Библиотеки приложений будут разрабатываться независимо от одной и той же базы кода.Я хотел бы начать с любой версии, которая является более продвинутой, а затем просмотреть журналы управления версиями и различия для другой версии и объединить изменения.Могут быть некоторые инструменты, которые могут помочь вам в этом, но объединение - это в основном ручной процесс.

Если у вас есть два несовместимых требования, вам нужно будет «инкапсулировать концепцию, которая варьируется», вводя адаптер или полиморфныйреализации того же интерфейса.Существуют различные методы, которые помогут вам отделить компоненты;например, принцип обращения зависимостей, шаблон посредника.

Если у вас есть модульные тесты для библиотек приложений, процесс слияния будет намного проще.

Хотя это звучит как большая работа,поддержание расходящихся кодовых баз - это кошмар.Как только шаблон установлен, становится все сложнее и сложнее что-либо делать, и прецедент для следующей копии уже готов.Каждый раз, когда я видел этот шаблон на практике, продукт выходил из строя медленно и дорого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...