Найдите несколько фрагментов кода, которые можно сгруппировать и вызвать атомарно.
TL;DR: сгруппируйте связные предложения вместе.
Устраненные проблемы
- Читабельность
- Сложность
- Повторное использование кода
Связанные запахи кода
Шаги
1. Вынести фрагмент кода в отдельный новый метод
2. Замените старый код вызовом недавно созданного метода.
Образец кода
До
object Ingenuity { fun moveFollowingPerseverance() { //take Off raiseTo(10 feet) //move forward to perseverance while (distanceToPerseverance() < 5 feet){ moveForward() } //land raiseTo(0 feet) }
После
object Ingenuity { //1. Move the code fragment to a separate new method private fun takeOff() { raiseTo(10 feet) } //1. Move the code fragment to a separate new method private fun moveForwardToPerseverance() { while (distanceToPerseverance() < 5 feet){ moveForward() } } //1. Move the code fragment to a separate new method private fun land() { raiseTo(0 feet) } fun moveFollowingPerseverance() { takeOff() //2. Replace the old code with a call to the recently created method. moveForwardToPerseverance() //2. Replace the old code with a call to the recently created method. land() //2. Replace the old code with a call to the recently created method. } }
Тип
[X] Автоматический
Многие IDE поддерживают этот безопасный рефакторинг.
Ограничения
Плохо работает, если вы используете анти-шаблон метапрограммирования
Теги
- Сложность
- Читабельность
Связанные рефакторинги
- Переместить метод в новый класс
Эта статья является частью серии рефакторинг.