2.2 KiB
2.2 KiB
#рефакторинг #методы_рефакторинга
Проблема
Два класса имеют одно и то же поле
class Employee {...} // Java
class Salesman extends Employee {
private String name;
}
class Engineer extends Employee {
private String name;
}
Решение
Переместите поле в суперкласс, убрав его из подклассов.
class Employee {
protected String name;
}
class Salesman extends Employee {...}
class Engineer extends Employee {...}
Причины рефакторинга
Подклассы развивались независимо друг от друга. Это привело к созданию одинаковых (или очень похожих) полей и методов.
Достоинства
- Убивает дублирование полей в подклассах
- Облегчает дальнейший перенос дублирующих методов из подклассов в суперкласс, если они есть
Порядок рефакторинга
- Проверьте, что оба поля используются для одинаковых нужд в подклассах.
- Если поля имеют разные названия, дайте им общее имя и замените все обращения к полям в существующем коде.
- Создайте поле с таким же именем в суперклассе. Обратите внимание на то, что если поля были приватные (private), поле в суперклассе должно быть защищённым (protected).
- Удалите поля из подклассов
