Skip to content

Нарушение слоев

ID: layer_violation | Степень критичности: Высокая (по умолчанию)

Нарушение слоев (Layer violation) возникает, когда код в одном архитектурном слое импортирует код из слоя, о котором он не должен знать (например, слой Domain импортирует из Infrastructure).

Почему это «запах»

  • Нарушает абстракцию: Детали внутренней реализации просачиваются в высокоуровневую бизнес-логику.
  • Сложность тестирования: Бизнес-логику становится трудно тестировать без моков для инфраструктуры (БД, API и т.д.).
  • Жесткость: Изменение базы данных или внешней библиотеки требует изменения основной бизнес-логики.

Конфигурация

yaml
rules:
  layer_violation:
    severity: high
    layers:
      - name: domain
        path: '**/domain/**'
        allowed_imports: []
      - name: application
        path: '**/application/**'
        allowed_imports: ['domain']

ESLint правило

Этот детектор доступен как правило ESLint для получения обратной связи в реальном времени.

javascript
// eslint.config.js
export default [
  {
    rules: {
      '@archlinter/no-layer-violations': 'error',
    },
  },
];

Смотрите Интеграция с ESLint для инструкций по настройке.

Как исправить

  1. Инверсия зависимостей: Определите интерфейс в более высоком слое (Domain) и реализуйте его в более низком слое (Infrastructure).
  2. Рефакторинг: Перенесите ошибочно размещенный код в соответствующий слой.

Released under the MIT License.