Nunca use uma palavra longa quando uma diminuta for suficiente.
Eu não acho que sua tese de "comprimento do nome do método é proporcional ao comprimento do método" realmente retém a água.
Tome o exemplo que você fornece: "getNumberOfSkinCareEligibleItemsWithinTransaction". Parece-me que faz apenas uma coisa: conta o número de itens em uma transação que se enquadram em uma determinada categoria. É claro que não posso julgar sem ver o código real do método, mas isso me parece um bom método.
Por outro lado, vi muitos métodos com nomes muito curtos e concisos que dão muito trabalho, como "processSale" ou o sempre popular "doStuff".
Eu acho que seria difícil estabelecer uma regra rígida sobre o tamanho do nome do método, mas o objetivo deve ser: longo o suficiente para transmitir o que a função faz, curto o suficiente para ser legível. Neste exemplo, eu acho que "getSkinCareCount" provavelmente seria suficiente. A questão é o que você precisa distinguir. Se você tem uma função que conta itens elegíveis para cuidados com a pele em transações e outra que conta itens elegíveis para cuidados com a pele em outra coisa, "dentro de Transações" agrega valor. Mas se isso não significa nada para falar sobre esses itens fora de uma transação, não faz sentido atrapalhar o nome com essas informações supérfluas.
Segundo, acho que não é realista supor que um nome de qualquer tamanho gerenciável lhe diga exatamente o que a função faz em todos os casos, exceto nos mais triviais. Um objetivo realista é criar um nome que dê ao leitor uma pista e que possa ser lembrado mais tarde. Por exemplo, se estou tentando encontrar o código que calcula quanta antimatéria precisamos consumir para atingir a velocidade da dobra, se eu olhar os nomes das funções e vir "calibrateTransporter", "firePhasers" e "calcAntimatterBurn", é bem claro que os dois primeiros não são, mas o terceiro pode ser. Se eu verificar e descobrir que esse é realmente o que estou procurando, será fácil lembrar que, quando voltar amanhã para trabalhar um pouco mais sobre esse problema. Isso é bom o suficiente.
Três, nomes longos semelhantes são mais confusos do que nomes abreviados. Se eu tiver duas funções chamadas "calcSalesmanPay" e "calcGeekPay", posso adivinhar qual é qual rapidamente. Mas se eles são chamados "calculeMonthlyCheckAmountForSalesmanForExportToAccountingSystemAndReconciliation" e "calculeMonthlyCheckAmountForProgrammersForExportToAccountingSystemAndReconciliation", preciso estudar os nomes para ver qual é qual. As informações extras no nome provavelmente são contraproducentes nesses casos. Transforma um pensamento de meio segundo em um pensamento de 30 segundos.