Також відомий як Move Field

Рефакторинг Переміщення поля

Проблема

Поле використовується в іншому класі більше, ніж у власному.

Рішення

Створіть поле в новому класі і перенаправляйте до нього всіх користувачів старого поля.
До
Move Field - Before
Після
Move Field - After

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

Часто поля переносяться як частини «відокремлення одного класу з іншого» (Extract class). Вирішити, в якому з класів повинне залишитися поле, буває непросто. Проте, у нас є непоганий рецепт — поле має бути там, де знаходяться методи, які його використовують (або там, де цих методів більше).

Це правило допоможе вам і в інших випадках, коли поле просто знаходиться не там, де треба.

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

  1. Якщо поле публічне, вам буде набагато простіше виконати рефакторинг, якщо ви зробите його приватним і надасте публічні методи доступу (для цього можна використати рефакторинг «інкапсуляція поля» (Encapsulate field)).

  2. Створіть таке ж поле з методами доступу в класі-одержувачі.

  3. Визначте, як ви звертатиметеся до класу-одержувача. Цілком можливо, у вас вже є поле або метод, які повертають відповідний об'єкт. Якщо ні — треба буде написати новий метод або поле, в якому б зберігався об'єкт класу-одержувача.

  4. Замініть усі звернення до старого поля на відповідні виклики методів в класі-одержувачі. Якщо поле не приватне, виконайте це і в суперкласі, і в підкласах.

  5. Видаліть поле в класі-донорі.

Замучились читати?

Збігайте за подушкою, в нас тут контенту приблизно на 7 годин читання.

Або спробуйте наш новий інтерактивний курс з рефакторингу. Він більш інформативний та набагато цікавіший за банальний тест.

Дізнатися більше...

Живий приклад

Перший раз у нас? Нічого страшного!

У нас тут все просто – цей інтерактивний приклад дуже схожий на відео (хоча й виглядає набагато крутіше).

  1. Натискаєте велику кнопку "Почати", а далі слідуєте усім підказкам.
  2. Ви можете перемотувати програвання, використовуючи стрілки зліва.
  3. Окрім того, ви можете подивитися різницю між стартовим та отриманим кодом, натиснувши кнопку ока ().
  4. Кнопка компіляції та тестування () дає змогу перевірити код на наявність помилок.