Неустойчивый интерфейс (Unstable Interface)
ID: unstable_interface | Степень критичности: Средняя (по умолчанию)
Выявляет модули, чей публичный API (экспорты) часто меняется согласно истории git, в то время как от него зависят многие другие модули.
Почему это «запах»
Неустойчивый интерфейс вызывает «эффект домино». Каждый раз при изменении интерфейса может потребоваться обновление всех его потребителей, что приводит к большому количеству лишней работы и потенциальным багам.
Как исправить
- Стабилизируйте API: Уделяйте больше времени проектированию интерфейса перед реализацией.
- Используйте версионирование: Если возможно, поддерживайте несколько версий интерфейса одновременно во время переходного периода.
- Сузьте интерфейс: Экспортируйте только то, что абсолютно необходимо.
Конфигурация
yaml
rules:
unstable_interface:
severity: medium
min_churn: 10
min_dependants: 5
score_threshold: 100Параметры по умолчанию
min_churn:10- минимальное количество изменений файла в git (требуетgit: { enabled: true })min_dependants:5- минимальное количество модулей, зависящих от данного модуляscore_threshold:100- пороговое значение нестабильности интерфейса