Wenn ich einen guten Namen für etwas finde, wird es immer wieder als ein Objekt betrachtet , das seine Existenz rechtfertigen muss. Frag dich selbst:
- Was macht die Klasse / Methode / Variable, dh wozu dient sie im weiteren Sinne und wozu dient sie?
- Was genau muss es mit seinem Zweck kommunizieren, dh was ist der wesentliche Teil, den der Name enthalten muss?
Die meisten Entwickler sind sich einig, dass die Lesbarkeit bei der Benennung immer von größter Bedeutung ist. Schreiben Sie nicht einfach Code, damit Sie wissen, was Sie meinen, während Sie ihn schreiben, sondern damit jemand, der irgendwann in der Zukunft zum ersten Mal auf den Code schaut, weiß, was Sie gemeint haben, ohne zu viel darüber nachdenken zu müssen. Sie werden den Code nur einmal schreiben, aber während seiner Lebensdauer muss er höchstwahrscheinlich viele Male bearbeitet und noch öfter gelesen werden.
Der Code sollte sich selbst dokumentierenDas heißt, Ihre Benennung sollte deutlich machen, was etwas bewirkt. Wenn Sie erläutern müssen, was eine Codezeile in einem Kommentar bewirkt, und das Umbenennen von Elementen nicht ausreichend verbessert, sollten Sie ernsthaft in Erwägung ziehen, diese Zeile in eine neue Methode mit einem entsprechend beschreibenden Namen umzugestalten, damit beim Lesen der ursprünglichen Methode die Neuer Methodenaufruf beschreibt, was gerade passiert. Hab keine Angst davor, lange Namen zu haben. Natürlich sollten Sie keine Romane in Klassen- / Methoden- / Variablennamen schreiben, aber ich möchte lieber, dass ein Name zu lang und beschreibend als zu kurz ist, und ich muss herausfinden, was er tut, indem ich unter die Haube schaue. Mit Ausnahme einiger offensichtlicher Ausnahmen wie X / Y-Koordinaten und häufig verwendeter Akronyme sollten Sie Namen und Abkürzungen mit einzelnen Zeichen vermeiden. Aufrufen von "bkBtn" anstelle von "backButton"
Wenn es Ihre Sprache erlaubt, lassen Sie Ihren Code wie einen englischen Satz lesen. Objekte verwenden Substantive, Methoden verwenden Verben. Boolesche Methoden beginnen normalerweise mit "is", aber es gibt viele andere Optionen, die die Bedeutung je nach Anwendungsfall noch besser vermitteln, z. B. "can", "should" oder "does". Natürlich können nicht alle Sprachen so gut sein wie Smalltalk, aber einige Symbole werden im Allgemeinen als Teile des Satzes verstanden. Zwei Smalltalk-Konventionen, die ich persönlich so oft wie möglich in anderen Sprachen verwenden möchte, sind das Präfixieren des Namens von Schleifenparametern mit "each" und das Präfixieren von Methodenparametern mit dem Artikel "a" (oder "an" oder "some" für Sammlungen). . Dies ist möglicherweise kein allgemeiner Standard in Java, und jeder kann dieses Bit ignorieren. aber ich finde, dass dies die Lesbarkeit von Code erheblich verbessert. Zum Beispiel (Beispiel in Java):
public boolean shouldConsiderAbbreviating(List<String> someNames) {
for (String eachName : someNames) {
if (isTooLong(eachName)) {
return true;
}
}
return false;
}
Dies sollte für Leute mit nur geringen Java-Kenntnissen wie folgt lesbar sein:
Um festzustellen, ob Sie in Betracht ziehen sollten, eine Liste einiger Namen (bei denen es sich um Zeichenfolgen handelt) abzukürzen, durchlaufen Sie einige Namen und bestimmen Sie für jeden Namen, ob er zu lang ist. wenn ja, kehre zurück true
; Wenn keiner zu lang ist, kehre zurück false
.
Vergleichen Sie den obigen Code, indem Sie nur das Argument strings
und die Schleifenvariable benennen string
, insbesondere bei einer komplexeren Methode. Sie müssten genau hinsehen, um den Unterschied zu erkennen, anstatt die Verwendung anhand eines Blicks auf den Namen zu erkennen.