Autumn SALE

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

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

Проблема

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

Решение

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

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

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

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

Достоинства

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

Недостатки

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

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

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

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

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

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

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