Я использую функции частично как способ документировать код. Вызов функции со значимым именем облегчает понимание кода. В некоторых случаях даже функция с одной строкой имеет смысл.
Например, в «Чистом коде» Роберт С. Мартин приводит следующий пример: какой из них вы бы предпочли увидеть? Эта:
// Check to see if the employee is eligible for full benefits
if ((employee.flags & HOURLY_FLAG) &&
(employee.age > 65))
Или это?
if (employee.isEligibleForFullBenefits())
Я не всегда согласен с ним, но в этом случае я согласен. Код должен быть читаемым, не только когда вы его пишете и знаете все детали, но и в 21:00, когда вам нужно исправлять ошибки в чужом коде. Не рекомендуется смотреть на длинные условия и пытаться выяснить все двойные негативы. Если вы можете просто указать имя (не только условия, но и каждый фрагмент кода, который вы пишете), это станет намного проще.
Я никогда не жалел, что что-то вставил в функцию, и если вы беспокоитесь о производительности, то сначала профиль.