Ich verwende gerne Fragezeichen am Ende von Methoden- / Funktionsnamen in anderen Sprachen. Java lässt mich das nicht tun. Wie kann ich als Problemumgehung boolesche Rückgabemethoden in Java benennen? Mit Hilfe eines is
, has
, should
, can
in der vor einem Verfahren Sound in Ordnung für einige Fälle. Gibt es eine bessere Möglichkeit, solche Methoden zu benennen?
Zum Beispiel createFreshSnapshot?
java
methods
naming-conventions
letronje
quelle
quelle
?
einen Methodennamen?p
am Ende des MethodennamensAntworten:
Die Konvention besteht darin, eine Frage im Namen zu stellen.
Hier einige Beispiele, die im JDK zu finden sind:
Auf diese Weise werden die Namen so gelesen, als hätten sie am Ende ein Fragezeichen.
Und
true
bedeutet dann ja undfalse
bedeutet nein.Oder Sie könnten es wie eine Behauptung lesen:
Hinweis:
Manchmal möchten Sie eine Methode wie folgt benennen
createFreshSnapshot?
. Ohne das Fragezeichen impliziert der Name, dass die Methode einen Snapshot erstellen sollte, anstatt zu prüfen, ob einer erforderlich ist.In diesem Fall sollten Sie überdenken, was Sie tatsächlich fragen. So etwas
isSnapshotExpired
ist ein viel besserer Name und vermittelt, was die Methode Ihnen sagt, wenn sie aufgerufen wird. Das Befolgen eines solchen Musters kann auch dazu beitragen, dass mehr Funktionen rein und ohne Nebenwirkungen bleiben.Wenn Sie ein tun Google - Suche nach
isEmpty()
in der Java - API, erhalten Sie viele Ergebnisse.quelle
isSnapshotExpired
oder so ähnlich umbenennen . (basierend auf Ihren Kriterien)shouldHeartbeat()
Methode gesendet werden sollen .isEmpty()
undhasChildren()
sind Fragen und keine Behauptungen ? Auf Englisch liest es sich tatsächlich etwas besser, wenn Sie sich diese Namen als Behauptungen oder Prädikate vorstellen.Wenn Sie möchten, dass Ihre Klasse mit der Java Beans-Spezifikation kompatibel ist , damit Tools, die Reflection verwenden (z. B. JavaBuilders , JGoodies Binding ), boolesche Getter erkennen können, verwenden Sie entweder
getXXXX()
oderisXXXX()
als Methodennamen. Aus der Java Beans-Spezifikation:quelle
public boolean is<PropertyName>();
es sieht aus wie ein Generikum.Ich möchte diesen Link veröffentlichen, da er für Peeps, die diese Antwort überprüfen und nach mehr Konventionen im Java-Stil suchen, hilfreich sein kann
Richtlinien für den Java-Programmierstil
Punkt "2.13 ist Präfix sollte für boolesche Variablen und Methoden verwendet werden." ist spezifisch relevant und schlägt das Präfix is vor .
Der Styleguide schlägt vor:
Wenn Sie die Richtlinien befolgen, wird meiner Meinung nach die geeignete Methode genannt:
quelle
Für Methoden, die möglicherweise fehlschlagen, dh Sie geben Booleschen Wert als Rückgabetyp an, würde ich das Präfix verwenden
try
:Verwenden Sie für alle anderen Fälle Präfixe wie
is..
has..
was..
can..
allows..
..quelle
Standard ist die Verwendung von 'ist' oder 'hat' als Präfix. Zum Beispiel
isValid
,hasChildren
.quelle
is
ist der, dem ich mehr als jeder andere begegnet bin. Was auch immer in der aktuellen Situation Sinn macht, ist die beste Option.quelle
Ich möchte eine andere Sicht auf diese allgemeine Namenskonvention zeigen, z.
Set :
boolean add(E e)
wo die Begründung ist:
Führen Sie eine Verarbeitung durch und melden Sie dann , ob dies erfolgreich war oder nicht .
Während der Name in der
return
Tat einboolean
Name der Methode ist, sollte die Verarbeitung anstelle des Ergebnistyps (in diesem Beispiel boolesch) abgeschlossen sein.Ihr
createFreshSnapshot
Beispiel scheint für mich eher mit dieser Sichtweise verbunden zu sein, da dies Folgendes zu bedeuten scheint: Erstellen Sie einen neuen Schnappschuss und berichten Sie dann, ob die Erstellungsoperation erfolgreich war. In Anbetracht dieser ArgumentationcreateFreshSnapshot
scheint der Name die beste für Ihre Situation zu sein.quelle