Нарушение слоев
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 для инструкций по настройке.
Как исправить
- Инверсия зависимостей: Определите интерфейс в более высоком слое (Domain) и реализуйте его в более низком слое (Infrastructure).
- Рефакторинг: Перенесите ошибочно размещенный код в соответствующий слой.