Глянь мой новый курс по Git! Привет! Глянь мой новый курс по Git! Привет! Глянь мой новый курс по Git на GitByBit.com! Привет! Хочешь круто подтянуть Git? Глянь мой новый курс на GitByBit.com!

Добавление параметра

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

Проблема

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

Решение

Создайте новый параметр, чтобы передать эти данные.

До
Add Parameter - Before
После
Add Parameter - After

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

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

Достоинства

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

Недостатки

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

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

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

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

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

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

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