Общее правило для этих сценариев - это управление конфигурацией, а не инструкциями if / else по всему коду.Особые правила из v1, v2 и т. Д.
Также вам нужно иметь некоторую обработку для приложений по умолчанию.
Управляется переменными конфигурации и времени сборки.
Конфигурированием в вашем случае будет файл подключения сервисного контейнера для внедрения зависимостей, которые имеют разные реализации для ваших разных клиентов - v1, v2.С внедрением зависимостей у вас будет общий поток вашего приложения, и вы можете изменить основную бизнес-логику с помощью другой реализации.
Вы можете вводить различные переменные конфигурации, чтобы можно было изменять значения времени сборки.
Общая часть
Об общем коде вы можете использовать комбинацию шаблона оформления и команды конструирования по порядкуиметь правильную структуру.
Также одним дополнительным шаблоном является обнуляемый объект, если вы хотите отключить определенную функцию для клиента.
Тестирование
О тестировании - на основе TDD и BDDв соответствии с требованиями клиента у вас будет вся логика, выделенная для конкретного клиента.
Именование
Имена должны выполняться на основе функции, а не клиента.
Вы можете найти больше о создании whitelableприложения.