Skip to content

Неустойчивый интерфейс (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 - пороговое значение нестабильности интерфейса

Released under the MIT License.