...

Что вообще происходит?

Что можно улышать: “Тут надо бы порефакторить”. “Задачу пока не доделал, там пришлось сначала рефакторинг небольшой сделать”. “Там все перерефакторили и теперь мой код не мержится”.

Рефакторить программу (refactor) – это значит менять код, чтобы с ним стало удобнее работать, но чтобы поведение кода не поменялось.

Рефакторинг (refactoring) – это изменение в коде, которое не меняет поведение, но делает код удобнее в работе.

Главная книга про рефакторинг – Мартин Фаулер, “Рефакторинг: улучшение существующего кода”.

Зачем?

Зачем менять код, если он уже работает?

Чтобы сделать код:

  • более читаемым
  • более удобным для тестирования
  • более удобным для повторного использования
  • менее хрупким

Примеры рефакторингов

  • Выделить кусок метода/функции в новый метод/функцию
  • переместить метод из одного класса в другой
  • удалить метод-посредник, который не делает содержательной работы, а только вызывает другогй метод
  • добавить новый параметр в метод/функцию
  • удалить неиспользуемый параметр из метода/функции

…и еще много других. В книге Фаулера есть “список рефакторингов”, там более 70 пунктов.

Техника безопасности

Как ничего не сломать при проведении рефакторинга?

Может помочь:

  • (качественные) юнит-тесты
  • рефакторинг с помощью автоматизированных инструментов в IDE (не всегда возможно, но если возможно – это хороший вариант)

И еще одно правило безопасных рефаторингов: разделяй рефаторинг и реализацию новой функциональности. Если реализуешь новую фичу и попутно делаешь рефакторинг, сделай рефакторинг сначала и закоммить/замержи в trunk/master. А потом делай и коммить/мержи новую фичу.

Ссылки