Средний

Code smells: запахи плохого кода

Урок 3 из 5 в курсе Чистый код и рефакторинг

Содержание курса (3/5)

Code smells: запахи плохого кода

code smell — это симптом, а не баг: код работает, но что-то с ним не так.

Почему это важно: Запахи помогают видеть проблемы до того, как они превратятся в серьёзные баги или замедлят разработку.

Главная идея

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

Как это выглядит на практике

  1. Видим функцию на 300 строк → smell: Long Method.
  2. Один и тот же if-else в трёх местах → smell: Duplicated Code.
  3. Класс имеет 20 методов и 15 полей → smell: God Object.
  4. Команда формулирует тикет на рефакторинг по конкретному запаху.

Что происходит под капотом

  • Long Method — функция, которая слишком велика, чтобы её удобно читать.
  • Duplicated Code — одинаковая или похожая логика в разных местах.
  • Feature Envy — метод одного класса всё время дёргает данные другого.
  • Primitive Obsession — везде строки и числа вместо доменных типов.
  • Shotgun Surgery — одно изменение требует правок в десятке мест.

Типичные ошибки и заблуждения

  • Ошибка: запах = баг. Запах — это сигнал, а не ошибка.
  • Ошибка: убирать все запахи сразу. Достаточно убирать те, что мешают текущей задаче.
  • Ошибка: 'у меня в коде запахов нет'. Они есть у всех, вопрос — какие.
  • Ошибка: запах исчезнет сам. Без рефакторинга они только накапливаются.

Ключевые выводы

  • Запах — повод задуматься, а не паниковать.
  • Словарь запахов помогает обсуждать код.
  • Запахи группируются: дублирование, размер, связность.
  • Лучше чинить по дороге, чем устраивать большие 'недели рефакторинга'.

Термины урока

Refactoring catalog — каталог типовых преобразований кода (Фаулер).
Boy Scout Rule — оставляй код чище, чем нашёл.
Big Refactor — крупный рефакторинг, который часто проваливается из-за объёма.
Tech debt backlog — отдельный список технического долга.

Связь с работой backend-разработчика

В backend запахи быстро превращаются в инциденты в проде. Лучше замечать их рано, на ревью.

Мини-разбор реальной ситуации

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

Что запомнить

  • Запах — симптом, не диагноз.
  • Не нужно править всё сразу.
  • Рефакторинг по дороге — лучший подход.

Итог

Code smells — это общий язык команды для обсуждения качества кода.

Комментарии к уроку

Войдите, чтобы оставить комментарий.

Пока нет комментариев — будьте первым.