Также известен как Parameterize Method

Рефакторинг Параметризация метода

Проблема

Несколько методов выполняют похожие действия, которые отличаются только какими-то внутренними значениями, числами или операциями.

Решение

Объедините все эти методы в один с параметром, в который будет передаваться отличающееся значение.
До
Parameterize Method - Before
После
Parameterize Method - After

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

Если у вас есть схожие методы, скорей всего, в них присутствует дублирующий код со всеми вытекающими недостатками.

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

Недостатки

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

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

Порядок рефакторинга

  1. Создайте новый метод с параметром и поместите в него общий для всех методов код, применяя извлечение метода. Обратите внимание, иногда общей оказывается только определённая часть методов. В этом случае рефакторинг сведётся к извлечению только этой общей части в новый метод.

  2. Отличающееся значение замените параметром в коде нового метода.

  3. Для каждого старого метода найдите места, где они вызываются, и поменяйте их вызовы на вызовы нового метода с параметром. После чего старый метод можно удалить.

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

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

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

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

Живой пример

Первый раз здесь? Ничего страшного!

У нас здесь всё просто – интерактивный пример очень похож на видео (но выглядит гораздо круче).

  1. После начала проигрывания, вам показываются разнообразные подсказки и сообщения. Вы продвигаетесь дальше, кликая на них.
  2. Вы можете перематывать шаги, используя стрелки слева.
  3. Кроме того, вы можете посмотреть разницу между первоначальным и получившимся кодом, нажав кнопку с глазом ().
  4. Кнопка компиляции () позвоялет проверить текущий код на наличие ошибок.