Verwenden Sie niemals ein langes Wort, wenn ein kleines Wort ausreicht.
Ich glaube nicht, dass Ihre These von "Länge des Methodennamens proportional zur Länge der Methode" wirklich Wasser enthält.
Nehmen Sie das von Ihnen angegebene Beispiel: "getNumberOfSkinCareEligibleItemsWithinTransaction". Das klingt für mich so, als würde es nur eines tun: Es zählt die Anzahl der Elemente in einer Transaktion, die in eine bestimmte Kategorie fallen. Natürlich kann ich nicht beurteilen, ohne den tatsächlichen Code für die Methode zu sehen, aber das klingt für mich nach einer guten Methode.
Andererseits habe ich viele Methoden mit sehr kurzen und prägnanten Namen gesehen, die viel zu viel Arbeit leisten, wie "processSale" oder das immer beliebte "doStuff".
Ich denke, es wäre schwierig, eine feste Regel für die Länge des Methodennamens zu geben, aber das Ziel sollte sein: lang genug, um zu vermitteln, was die Funktion tut, kurz genug, um lesbar zu sein. In diesem Beispiel würde ich denken, dass "getSkinCareCount" wahrscheinlich ausreichend gewesen wäre. Die Frage ist, was Sie unterscheiden müssen. Wenn Sie eine Funktion haben, die für Hautpflege geeignete Elemente in Transaktionen zählt, und eine andere, die Hautpflege-fähige Elemente in etwas anderem zählt, dann bietet "insideTransactions" einen Mehrwert. Wenn es jedoch nichts bedeutet, außerhalb einer Transaktion über solche Elemente zu sprechen, macht es keinen Sinn, den Namen mit solchen überflüssigen Informationen zu überladen.
Zweitens halte ich es für unrealistisch anzunehmen, dass ein Name von überschaubarer Länge genau sagt, was die Funktion in allen außer den trivialsten Fällen tut. Ein realistisches Ziel ist es, einen Namen zu finden, der dem Leser einen Hinweis gibt und an den man sich später erinnern kann. Wenn ich beispielsweise versuche, den Code zu finden, der berechnet, wie viel Antimaterie wir verbrauchen müssen, um die Warp-Geschwindigkeit zu erreichen, wenn ich mir die Funktionsnamen ansehe und "kalibriere Transporter", "firePhasers" und "calcAntimatterBurn" sehe, ist das ziemlich klar die ersten beiden sind es nicht, aber die dritte könnte es sein. Wenn ich überprüfe und feststelle, dass dies tatsächlich das ist, wonach ich suche, fällt es mir leicht, mich daran zu erinnern, wenn ich morgen zurückkomme, um an diesem Problem weiter zu arbeiten. Das ist gut genug.
Drei lange Namen, die ähnlich sind, sind verwirrender als kurze Namen. Wenn ich zwei Funktionen namens "calcSalesmanPay" und "calcGeekPay" habe, kann ich auf einen Blick erraten, welche welche ist. Aber wenn sie "berechneMonatlyCheckAmountForSalesmanForExportToAccountingSystemAndReconciliation" und "berechneMonatlyCheckAmountForProgrammersForExportToAccountingSystemAndReconciliation" heißen, muss ich die Namen studieren, um zu sehen, welche welche sind. Die zusätzlichen Informationen im Namen sind in solchen Fällen wahrscheinlich kontraproduktiv. Aus einem halben Sekunden-Denken wird ein 30-Sekunden-Denken.