Добавление параметра.
Методу не хватает данных для осуществления каких-то действий.
Создайте новый параметр, чтобы передать эти данные.
##Пример
void charge() {
bank.transfer(amount);
}void charge(Date asOf) {
bank.transfer(amount, asOf);
}##Зачем делать рефакторинг
Вам необходимо внести какие-то изменения в метод. Эти изменения требуют дополнительной информации или данных, которые ранее в метод не подавались.
Альтернатива этому рефакторингу — новое приватное поле, в котором хранились бы нужные методу данные. Параметр предпочтительнее, когда данные нужны эпизодически или часто меняются и держать их в объекте всё время нет смысла. В остальных случаях лучше ввести приватное поле и заполнять его нужными данными перед вызовом метода.
##Преимущества
-
Метод получает нужные данные явно от вызывающего кода: зависимость видна в его сигнатуре, а не спрятана в состоянии объекта.
-
Эпизодические или часто меняющиеся данные не приходится постоянно хранить в объекте, поэтому класс не обрастает полями, которые нужны лишь для одного вызова.
##Как делать рефакторинг
-
Проверьте, не определён ли метод в суперклассе или подклассе. Если метод в них присутствует, нужно будет повторить все шаги также в этих классах.
-
Следующий шаг важен, чтобы сохранить работоспособность программы во время рефакторинга. Итак, создайте новый метод, скопировав старый, и добавьте в него требуемый параметр. Замените код старого метода вызовом нового метода. Вы можете подставить любое значение в новый параметр (например
nullдля объектов или ноль для чисел). -
Найдите все обращения к старому методу и замените их обращениями к новому методу.
-
Удалите старый метод. Этот шаг неосуществим, если старый метод является частью публичного интерфейса. В этом случае старый метод нужно пометить как устаревший (
deprecated).