Как рефакторить

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

Чек-лист правильно проведённого рефакторинга:

  1. Код должен стать чище.

    Если после рефакторинга код остался таким же грязным... Что ж, сожалею, вы только что потратили зря час своей жизни. Разберитесь почему это произошло.

    • Зачастую это случается тогда, когда вы отходите от рефакторинга мелкими изменениями и смешиваете кучу рефакторингов в одно большое изменение. Так очень легко потерять голову, особенно, если вы ограничены во времени.

    • Но такое случается и при работе с особенно запущенным кодом. Что бы вы ни улучшили, код в целом всё равно остаётся уродливым.

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

  2. В процессе рефакторинга не создаётся новая функциональность.

    Не смешивайте рефакторинг и непосредственную разработку новых фичей. Пытайтесь разделять эти процессы хотя бы в рамках отдельных коммитов.

  3. Все существующие тесты должны успешно проходить.

    Есть два случая, когда после рефакторинга ломаются тесты:

    • Вы допустили ошибку при изменении кода.

      Тут всё просто — идите и исправьте ошибку.

    • Ваши тесты были слишком низкоуровневые (например, тестировали приватные методы классов).

      В этом случае виноваты тесты и единственный способ это исправить — отрефакторить сами тесты и написать новые, более высокоуровневые тесты.

      Отличный способ избежать такой ситуации — писать тесты в стиле BDD.

Устали читать?

Сбегайте за подушкой, у нас тут контента на 7 часов чтения.

Или попробуйте наш новый интерактивный курс по рефакторингу. Он более информативный и гораздо более интересный, чем банальный текст.

Узнать больше...