Весняний РОЗПРОДАЖ

Додавання параметра

Також відомий як: Add Parameter

Проблема

Методу не вистачає даних для здійснення якихось дій.

Рішення

Створіть новий параметр, щоби передати ці дані.

До
Add Parameter - Before
Після
Add Parameter - After

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

Вам необхідно внести якісь зміни в метод. Ці зміни вимагають додаткової інформації або даних, які раніше в метод не подавалися.

Переваги

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

Недоліки

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

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

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

  1. Перевірте, чи не є метод вже визначеним в суперкласі або підкласі. Якщо метод в них вже присутній, треба буде повторити усі кроки також в цих класах.

  2. Наступний крок важливий для того, щоб зберегти працездатність програми під час рефакторингу. Отже, створіть новий метод, скопіювавши старий, і додайте в нього необхідний параметр. Замініть код старого методу викликом нового методу. Ви можете підставити будь-яке значення в новий параметр (наприклад null для об’єктів або нуль для чисел).

  3. Знайдіть усі звернення до старого методу і замініть їх зверненнями до нового методу.

  4. Видаліть старий метод. Цей крок стає неможливим, якщо старий метод є частиною публічного інтерфейсу. В цьому випадку старий метод треба помітити як застарілий (deprecated).