Найдите несколько фрагментов кода, которые можно сгруппировать и вызвать атомарно.

TL;DR: сгруппируйте связные предложения вместе.

Устраненные проблемы

  • Читабельность
  • Сложность
  • Повторное использование кода

Связанные запахи кода



Code Smell 03 — Functions Too Long
Людям становится скучно после строки 10.blog.devgenius.io















Шаги

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 поддерживают этот безопасный рефакторинг.

Ограничения

Плохо работает, если вы используете анти-шаблон метапрограммирования



Теги

  • Сложность
  • Читабельность

Связанные рефакторинги

  • Переместить метод в новый класс

Эта статья является частью серии рефакторинг.