Также известен как Add Parameter

Рефакторинг Добавление параметра

Проблема

Методу не хватает данных для осуществления каких-то действий.

Решение

Создайте новый параметр, чтобы передать эти данные.
До
Add Parameter - Before
После
Add Parameter - After

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

Вам необходимо внести какие-то изменения в метод. Эти изменения требуют дополнительной информации или данных, которые ранее в метод не подавались.

Достоинства

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

Недостатки

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

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

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

  1. Проверьте, не определён ли метод в суперклассе или подклассе. Если метод в них присутствует, нужно будет повторить все шаги также в этих классах.

  2. Следующий шаг важен, чтобы сохранить работоспособность программы во время рефакторинга. Итак, создайте новый метод, скопировав старый, и добавьте в него требуемый параметр. Замените код старого метода вызовом нового метода. Вы можете подставить любое значение в новый параметр (например null для объектов или ноль для чисел).

  3. Найдите все обращения к старому методу и замените их обращениями к новому методу.

  4. Удалите старый метод. Этот шаг неосуществим, если старый метод является частью публичного интерфейса. В этом случае старый метод нужно пометить как устаревший (deprecated).

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

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

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

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

Живой пример

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

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

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