Операция «Дробовик» (Shotgun Surgery)
ID: shotgun_surgery | Степень критичности: Средняя (по умолчанию)
Операция «дробовик» (Shotgun Surgery) происходит, когда одно изменение требований заставляет вас вносить множество мелких правок в разные модули. archlint обнаруживает это, анализируя историю git, чтобы найти файлы, которые часто меняются вместе (высокая частота совместных изменений).
Почему это «запах»
- Высокая стоимость поддержки: Каждая новая функция или исправление ошибки требует внесения правок в несколько частей системы.
- Подверженность ошибкам: Легко пропустить одно из множества необходимых изменений, что приведет к багам.
- Плохая инкапсуляция: Это указывает на то, что одна обязанность фрагментирована по кодовой базе, а не инкапсулирована в одном месте.
Как исправить
- Консолидация обязанностей: Используйте рефакторинг Move Method или Move Field, чтобы собрать связанную логику в одном модуле.
- Introduce Parameter Object: Если нескольким модулям требуется один и тот же набор данных, сгруппируйте их в один объект.
- Replace Data Value with Object: Если у вас есть много модулей, обрабатывающих одни и те же примитивные данные, инкапсулируйте эти данные и их поведение в новый класс.
Конфигурация
yaml
rules:
shotgun_surgery:
severity: mediumПараметры по умолчанию
min_co_changes:3- минимальное количество совместных изменений файлов для обнаруженияmin_frequency:5- минимальная частота совместных измененийlookback_commits:500- количество коммитов для анализа истории (требуетgit: { enabled: true })