Skip to content

Рассредоточенный модуль

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

Выявляет «модуль» (обычно файл или логическую группу), где внутренние элементы (функции, классы) плохо связаны друг с другом. Это указывает на то, что у модуля нет единой цели, и он, скорее всего, является просто набором случайного кода.

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

Модуль должен быть связным, следуя принципу: «вещи, которые меняются вместе, должны находиться вместе». Если внутренние части модуля не взаимодействуют друг с другом, это не настоящий модуль — это просто папка или файл, используемые как «склад» для всего подряд. Это затрудняет поиск кода и увеличивает когнитивную нагрузку.

Примеры

Плохо

Файл, содержащий несвязанные вспомогательные функции, которые не разделяют общую логику или данные.

typescript
// misc-utils.ts
export const formatCurrency = (val: number) => { ... };
export const validateEmail = (email: string) => { ... };
export const parseJwt = (token: string) => { ... };
// Эти три функции не имеют общего состояния или логики.

Хорошо

Сгруппируйте несвязанные функции в конкретные, связные модули.

typescript
// currency-utils.ts
export const formatCurrency = (val: number) => { ... };

// validation-utils.ts
export const validateEmail = (email: string) => { ... };

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

yaml
rules:
  module_cohesion:
    severity: medium
    min_exports: 5
    max_components: 2

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

Пересмотрите назначение модуля. Сгруппируйте код в более связные модули или переместите несвязанные части туда, где они действительно используются.

Параметры по умолчанию

  • min_exports: 5 - минимальное количество экспортов для анализа модуля
  • max_components: 2 - максимальное количество компонентов связности в модуле

Released under the MIT License.