Изменение поведения системы на панели управления - мечта заказчика. И кошмар разработчика программного обеспечения.
Проблемы
- Дублированный код
- Если загрязнение
- Глобальное использование
- "Связь"
- Тестируемость и взрывной рост сценариев тестирования.
- Сложность
Решения
- Избегайте настроек
- Создавать полиморфные объекты. Ввести их наружно.
Образец кода
Неправильный
Правильно
Обнаружение
Это архитектурный шаблон, поэтому его следует контролировать / избегать с помощью политик проектирования.
Примеры
- Настройки внешнего подключения
- Пользовательские настройки
- Переключатель функций
Исключения
- Иногда мы используем переключение функций в качестве защитного механизма. Это приемлемо в устаревшей системе. Эти переключатели должны быть очень недолговечными в системе CI / CD.
- Настройки гиперпараметров должны управляться объектами конфигурации.
Теги
- Глобалы
Вывод
Настройка поведения во время выполнения отлично подходит для программных систем.
Мы должны настроить наши объекты так, чтобы они могли вести себя по-разному, и мы должны добиться этого явным образом с помощью явных поведенческих объектов.
Таким образом, наш код будет более декларативным, чистым и тестируемым. Это не так просто, как добавить оператор IF. Такие ленивые разработчики привносят в наши системы множество сбоев и неожиданных проблем.
Система с 300 логическими конфигурациями имеет больше тестовых комбинаций (2 ^ 300), чем количество атомов во вселенной (10 ^ 80).
Также известен как
- Переключатели функций
Больше информации
Простота - залог эффективности.
Остин Фриман
Эта статья является частью серии CodeSmell.