Ніколи не вживайте довгого слова, коли це зробить зменшувальне слово.
Я не думаю, що ваша теза про те, що "довжина назви методу пропорційна довжині методу" насправді не відповідає.
Візьмемо приклад, який ви даєте: "getNumberOfSkinCareEligibleItemsWithinTransaction". Мені це здається, що він робить лише одне: він підраховує кількість елементів транзакції, які потрапляють у певну категорію. Звичайно, я не можу судити, не побачивши фактичного коду методу, але це здається мені хорошим методом.
З іншого боку, я бачив безліч методів із дуже короткими та стислими іменами, які значно полегшують роботу, як-от "processSale" чи популярний "doStuff".
Я думаю, що було б важко дати жорстке правило про довжину імені методу, але мета повинна бути: достатньо довга, щоб передати те, що функція виконує, досить коротка, щоб бути читабельною. У цьому прикладі я думаю, що "getSkinCareCount", ймовірно, було б достатнім. Питання в тому, що вам потрібно відрізняти. Якщо у вас є одна функція, яка враховує придатні до догляду за шкірою елементи трансакцій, та інша, яка рахує предмети, які відповідають за доглядом за шкірою, у чомусь іншому, то "в межах трансакцій" додає значення. Але якщо говорити про такі предмети поза трансакцією, це нічого не означає, то не має сенсу захаращувати назву такою зайвою інформацією.
По-друге, я вважаю, що диво нереально припустити, що ім’я будь-якої керованої довжини точно скаже вам, що ця функція виконує у всіх, крім самих тривіальних випадках. Реалістичною метою є створення імені, яке дає читачеві підказку, і про це можна згадати пізніше. Мовляв, якщо я намагаюся знайти код, який обчислює, скільки антиматерії нам потрібно споживати, щоб досягти швидкості викривлення, якщо я переглянув назви функцій та побачив "calibrateTransporter", "firePhasers" та "calcAntimatterBurn", то цілком зрозуміло, що перші два - не це, але третя може бути. Якщо я перевірю і виявлю, що це дійсно те, що я шукаю, буде легко запам'ятати, що коли я повернусь завтра, щоб ще трохи попрацювати над цією проблемою. Це досить добре.
Три, довгі імена, схожі, більш заплутані, ніж короткі назви. Якщо у мене є дві функції, які називаються "calcSalesmanPay" і "calcGeekPay", я можу швидко здогадатися, що це таке, що швидко. Але якщо вони називаються "CalcuMonthlyCheckAmountForSalesmanForExportToAccountingSystemAndReconciliation" і "izračunaMonthlyCheckAmountForProgrammersForExportToAccountingSystemAndReconciliation", я повинен вивчити імена, щоб побачити, хто це. Додаткова інформація в назві, ймовірно, є контрпродуктивною в таких випадках. Це перетворює пів секунди на 30-секундне.