Code smells: запахи плохого кода
code smell — это симптом, а не баг: код работает, но что-то с ним не так.
Почему это важно: Запахи помогают видеть проблемы до того, как они превратятся в серьёзные баги или замедлят разработку.
Главная идея
Существует словарь типичных запахов — от длинных функций до дублирования логики, — который помогает обсуждать качество кода.
Как это выглядит на практике
- Видим функцию на 300 строк → smell: Long Method.
- Один и тот же if-else в трёх местах → smell: Duplicated Code.
- Класс имеет 20 методов и 15 полей → smell: God Object.
- Команда формулирует тикет на рефакторинг по конкретному запаху.
Что происходит под капотом
- 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 — это общий язык команды для обсуждения качества кода.
Комментарии к уроку
Войдите, чтобы оставить комментарий.
Пока нет комментариев — будьте первым.