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

Переміщення поля

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

Проблема

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

Рішення

Створіть поле в новому класі і перенаправляйте до нього всіх користувачів старого поля.

До
Move Field - Before
Після
Move Field - After

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

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

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

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

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

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

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

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

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