Я частково використовую функції як спосіб документування коду. Виклик функції зі значущим іменем полегшує розуміння коду. В деяких випадках навіть функція з одним рядком має сенс.
Наприклад, у "Чистому коді" Роберт К. Мартін наводить такий приклад: Який із них ви б краще бачили? Це:
// Check to see if the employee is eligible for full benefits
if ((employee.flags & HOURLY_FLAG) &&
(employee.age > 65))
Або це?
if (employee.isEligibleForFullBenefits())
Я не завжди з ним погоджуюся, але в цьому випадку роблю. Код повинен бути читабельним не тільки тоді, коли ви пишете його і знаєте кожну деталь, але і о 21:00, коли вам доведеться виправляти помилки в чужому коді. Не дивитися на тривалий стан і намагатися розібратися у всіх подвійних негативах не рекомендується. Якщо ви можете просто поставити ім’я на ньому (не тільки умови, але і кожен фрагмент коду, який ви пишете), це стає набагато простіше.
Я ніколи не пошкодував про те, що поставив якусь функцію, і якщо ви переживаєте за продуктивність, то спочатку профілі.