Архитектура / структура программного обеспечения, поддерживающая различные версии 3-сторонней платформы - PullRequest
0 голосов
/ 07 мая 2019

В настоящее время я пишу программное обеспечение, которое используется в стороннем программном обеспечении.

Программное обеспечение сторонних производителей используется во всем мире, и разные клиенты будут использовать разные версии программного обеспечения.Например, v1, v2, v3.

В настоящее время у меня есть клиенты, использующие v1, v2 и v3, поэтому мне нужно, чтобы мой код работал в разных версиях.Мне интересно, как другие решают эту проблему, управляя вашим кодом, тестируя ваш код на другой версии и т. Д. И т. Д.

1 Ответ

0 голосов
/ 08 мая 2019

Общее правило для этих сценариев - это управление конфигурацией, а не инструкциями if / else по всему коду.Особые правила из v1, v2 и т. Д.

Также вам нужно иметь некоторую обработку для приложений по умолчанию.

Управляется переменными конфигурации и времени сборки.

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

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

Общая часть

Об общем коде вы можете использовать комбинацию шаблона оформления и команды конструирования по порядкуиметь правильную структуру.

Также одним дополнительным шаблоном является обнуляемый объект, если вы хотите отключить определенную функцию для клиента.

Тестирование

О тестировании - на основе TDD и BDDв соответствии с требованиями клиента у вас будет вся логика, выделенная для конкретного клиента.

Именование

Имена должны выполняться на основе функции, а не клиента.

Вы можете найти больше о создании whitelableприложения.

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