Логотип ConstructiCat
CodeBust.
Навигация по разделу ▾

Длинный метод.

Метод содержит слишком большое число строк кода. Длина метода более десяти строк должна начинать вас беспокоить.

##Признаки и симптомы

Метод содержит слишком большое число строк кода. Длина метода более десяти строк должна начинать вас беспокоить.

void checkout(Order order) {
  double total = 0;
  for (Item item : order.items) {
    double line = item.price * item.qty;
    if (item.qty > 10) line *= 0.9;
    total += line;
  }
  if (order.coupon != null) total -= order.coupon.discount;
  charge(order, tax(total));
  ship(order);
  email(order);
  log(order);
}

##Причины проблемы

В метод всё время что-то добавляется, но ничего не выносится. Так как писать код намного проще, чем читать, этот запах долго остаётся незамеченным — до тех пор пока метод не превратится в настоящего монстра.

Стоит помнить, что человеку зачастую ментально сложнее создать новый метод, чем дописать что-то в уже существующий: «Как же, мне нужно добавить всего две строки, не буду же я создавать для этого целый метод».

Таким образом, добавляется одна строка за другой, а в результате метод превращается в большую тарелку спагетти.

##Лечение

##Результат

  • Из всех видов объектного кода дольше всего выживают классы с короткими методами. Чем длиннее ваш метод или функция, тем труднее будет её понять и поддерживать.

  • Кроме того, в длинных методах зачастую можно обнаружить «залежи» дублирования кода.

##Производительность

Многие волнуются, что увеличение числа методов может плохо сказаться на производительности. В абсолютном большинстве случаев, это не является реальной проблемой, так что просто перестаньте об этом думать.

Имея чистый и понятный код, вы с большей вероятностью натолкнётесь на отличный способ реструктуризировать код программы и увеличить реальную производительность, если такая надобность вообще будет.