Nunca use una palabra larga cuando una diminuta servirá.
No creo que su tesis de "la longitud del nombre del método es proporcional a la longitud del método" realmente aguanta.
Tome el ejemplo que da: "getNumberOfSkinCareEligibleItemsWithinTransaction". Eso me parece que solo hace una cosa: cuenta el número de artículos en una transacción que caen en una determinada categoría. Por supuesto, no puedo juzgar sin ver el código real del método, pero eso me parece un buen método.
Por otro lado, he visto muchos métodos con nombres muy cortos y concisos que hacen mucho trabajo, como "processSale" o el siempre popular "doStuff".
Creo que sería difícil dar una regla estricta sobre la longitud del nombre del método, pero el objetivo debería ser: lo suficientemente largo como para transmitir lo que hace la función, lo suficientemente corto como para ser legible. En este ejemplo, creo que "getSkinCareCount" probablemente habría sido suficiente. La pregunta es qué necesitas distinguir. Si tiene una función que cuenta los artículos elegibles para el cuidado de la piel en las transacciones y otra que cuenta los artículos elegibles para el cuidado de la piel en otra cosa, entonces "insideTransactions" agrega valor. Pero si no significa nada hablar de tales artículos fuera de una transacción, entonces no tiene sentido saturar el nombre con información tan superflua.
Dos, creo que es muy poco realista suponer que un nombre de cualquier longitud manejable le dirá exactamente lo que hace la función en todos los casos, excepto en los más triviales. Un objetivo realista es crear un nombre que le dé al lector una pista, y que pueda recordarse más tarde. Por ejemplo, si intento encontrar el código que calcula la cantidad de antimateria que debemos consumir para alcanzar la velocidad de deformación, si miro los nombres de las funciones y veo "calibrateTransporter", "firePhasers" y "calcAntimatterBurn", es bastante claro que los dos primeros no lo son pero el tercero podría serlo. Si compruebo y descubro que ese es el que estoy buscando, será fácil recordarlo cuando regrese mañana para trabajar en este problema un poco más. Eso es lo suficientemente bueno.
Tres nombres largos que son similares son más confusos que los nombres cortos. Si tengo dos funciones llamadas "calcSalesmanPay" y "calcGeekPay", puedo adivinar cuál es cuál a simple vista. Pero si se llaman "CalculateMonthlyCheckAmountForSalesmanForExportToAccountingSystemAndReconciliation" y "CalculateMonthlyCheckAmountForProgrammersForExportToAccountingSystemAndReconciliation", tengo que estudiar los nombres para ver cuál es cuál. La información adicional en el nombre es probablemente contraproducente en tales casos. Convierte un pensamiento de medio segundo en un pensamiento de 30 segundos.