Non usare mai una parola lunga quando lo farà un diminutivo.
Non credo che la tua tesi su "la lunghezza del nome del metodo sia proporzionale alla lunghezza del metodo" trattiene davvero l'acqua.
Prendi l'esempio che dai: "getNumberOfSkinCareEligibleItemsWithinTransaction". Mi sembra che faccia solo una cosa: conta il numero di elementi in una transazione che rientrano in una determinata categoria. Ovviamente non posso giudicare senza vedere il codice effettivo per il metodo, ma a me sembra un buon metodo.
D'altra parte, ho visto molti metodi con nomi molto brevi e concisi che fanno strada a molto lavoro, come "processSale" o il sempre popolare "doStuff".
Penso che sarebbe difficile dare una regola rigida sulla lunghezza del nome del metodo, ma l'obiettivo dovrebbe essere: abbastanza lungo da trasmettere ciò che fa la funzione, abbastanza corto da essere leggibile. In questo esempio, penso che probabilmente "getSkinCareCount" sarebbe stato sufficiente. La domanda è cosa devi distinguere. Se hai una funzione che conta gli articoli idonei per la cura della pelle nelle transazioni e un'altra che conta gli articoli idonei per la cura della pelle in qualcos'altro, allora "all'interno delle Transazioni" aggiunge valore. Ma se non significa nulla parlare di tali elementi al di fuori di una transazione, non ha senso ingombrare il nome con tali informazioni superflue.
Due, penso che sia incredibilmente irrealistico supporre che un nome di qualsiasi lunghezza gestibile ti dirà esattamente cosa fa la funzione in tutti tranne i casi più banali. Un obiettivo realistico è quello di fare un nome che dia un indizio al lettore e che possa essere ricordato in seguito. Ad esempio, se sto cercando di trovare il codice che calcola la quantità di antimateria che dobbiamo consumare per raggiungere la velocità di curvatura, se guardo i nomi delle funzioni e vedo "calibrateTransporter", "firePhasers" e "calcAntimatterBurn", è abbastanza chiaro che i primi due non lo sono, ma il terzo potrebbe essere. Se controllo e trovo che quello è davvero quello che sto cercando, sarà facile ricordare che quando tornerò domani per lavorare ancora su questo problema. Va abbastanza bene.
Tre nomi lunghi simili sono più confusi dei nomi brevi. Se ho due funzioni chiamate "calcSalesmanPay" e "calcGeekPay", posso fare una buona ipotesi che è che a colpo d'occhio. Ma se vengono chiamati "CalcolaMonthlyCheckAmountForSalesmanForExportToAccountingSystemAndReconciliation" e "CalcolaMonthlyCheckAmountForProgrammersForExportToAccountingSystemAndReconciliation", devo studiare i nomi per vedere quale è. Le informazioni extra nel nome sono probabilmente controproducenti in questi casi. Trasforma un pensiero di mezzo secondo in un pensiero di 30 secondi.