Рассредоточенный модуль
ID: module_cohesion | Степень критичности: Средняя (по умолчанию)
Выявляет «модуль» (обычно файл или логическую группу), где внутренние элементы (функции, классы) плохо связаны друг с другом. Это указывает на то, что у модуля нет единой цели, и он, скорее всего, является просто набором случайного кода.
Почему это «запах»
Модуль должен быть связным, следуя принципу: «вещи, которые меняются вместе, должны находиться вместе». Если внутренние части модуля не взаимодействуют друг с другом, это не настоящий модуль — это просто папка или файл, используемые как «склад» для всего подряд. Это затрудняет поиск кода и увеличивает когнитивную нагрузку.
Примеры
Плохо
Файл, содержащий несвязанные вспомогательные функции, которые не разделяют общую логику или данные.
// misc-utils.ts
export const formatCurrency = (val: number) => { ... };
export const validateEmail = (email: string) => { ... };
export const parseJwt = (token: string) => { ... };
// Эти три функции не имеют общего состояния или логики.Хорошо
Сгруппируйте несвязанные функции в конкретные, связные модули.
// currency-utils.ts
export const formatCurrency = (val: number) => { ... };
// validation-utils.ts
export const validateEmail = (email: string) => { ... };Конфигурация
rules:
module_cohesion:
severity: medium
min_exports: 5
max_components: 2Как исправить
Пересмотрите назначение модуля. Сгруппируйте код в более связные модули или переместите несвязанные части туда, где они действительно используются.
Параметры по умолчанию
min_exports:5- минимальное количество экспортов для анализа модуляmax_components:2- максимальное количество компонентов связности в модуле