Skip to content

Операция «Дробовик» (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 })

Released under the MIT License.