У меня есть программный проект, который работает просто отлично.
Теперь этот проект необходимо скорректировать, чтобы смоделировать новую, но связанную систему.
Какие существуют стратегии, чтобы эти два кода были хорошо организованы?
Они будут иметь кодовую базу примерно на 90% одинаковую, но есть много функций, которые требуют небольшой корректировки.
Я думал о следующем:
Я не слишком удовлетворен этими решениями. Есть ли лучший подход?
У нас та же проблема, и вот как мы ее решаем:
#ifdef
раздел в соответствии с конфигурациейПреимущество этого подхода состоит в том, чтобы поддерживать общую часть всегда синхронной, и мы правильно изолируем каждую конкретную часть.
Но вы должны быть осторожны с не очень далеким фрагментом кода из каждой конфигурации. Например, при использовании аналогичного (но не одинакового) кода в разных конкретных файлах возможная ошибка может быть исправлена только в одной конфигурации. Его можно уменьшить, определив какой-то фрагмент кода в качестве общего шаблона или переосмыслив дизайн, чтобы поместить некоторую часть в общий
Надеюсь, что ответ поможет вам
Какие существуют стратегии, чтобы эти два кода были хорошо организованы? У них будет кодовая база примерно на 90%
Это не совсем то, что вам нужно, но просто убедитесь, что вы знаете об этом.
Submodules
разрешить встраивание сторонних репозиториев в отдельный подкаталог исходного дерева, всегда указывает на конкретный коммит.
Различные ветки в git-репозитории: идеальный контроль над двумя проектами, но общие изменения должны быть сделаны в каждой ветке отдельно.
Вы можете зафиксировать изменения в одной ветви, а затем использовать cherry-pick, чтобы добавить их в любую другую нужную ветку.