Welcher ist der bessere Name für eine Methode, die einen Booleschen Wert zurückgibt?
IsSupportContentType
oder
CanSupportContentType
naming
naming-standards
Vermittler
quelle
quelle
IsSupportedContentType
man grammatikalisch korrekt sein. (es sei denn, "support content type" fungiert als Nomen, was unwahrscheinlich erscheint.)supportsContentType
? Im Folgenden ist vollständig lesbar:if (abc.supportsContentType("text/html"))
. "can support" impliziert, dass es weitere Bedingungen gibt, um den Inhaltstyp zu unterstützen.Antworten:
Ist gegen Can
Gemäß den Empfehlungen der Microsoft-Namenskonvention sind sowohl "Is" als auch "Can" OK (und ebenso "Has") als Präfix für einen Booleschen Wert.
Im Klartext würde "Is" verwendet, um etwas über den Typ selbst zu identifizieren, nicht was er kann. Zum Beispiel
IsFixed
,IsDerivedFrom
,IsNullable
kann alle in CLR - Typen und Methoden gefunden werden. In all diesen Fällen folgt auf "Is" ein Adjektiv .Inzwischen „kann“ deutlicher zeigt eine Fähigkeit, zum Beispiel
CanEdit
,CanRead
,CanSeek
. In jedem dieser Fälle folgt auf can ein Verb .Da "Support" ein Verb ist, finde ich in deinem Fall
CanSupportContentType
besser.Kürzere Alternative
Andererseits besagen die Konventionen, dass das Präfix optional ist. Außerdem ist es etwas kitschig, den Argumenttyp in den Methodennamen aufzunehmen, da ein Entwickler den Typ des Arguments in Intellisense sehen kann. Sie können Ihre Methode also einfach so benennen
Supports
und definieren:... der kürzer ist und trotzdem klar den Zweck kommuniziert. Sie würden es so nennen:
Oder als Kompromiss vielleicht das Beste:
quelle
if ( someClass.Supports(contentType) )
hasSupportedContentType
std::vector::empty()
. Leert es den Vektor nur anhand seines Namens? Oder gibt es zurück, ob der Vektor leer ist? Eigentlich das letztere, da die erstere Aufgabe von erledigt wirdstd::vector::clear()
. Aber Sie müssen im Allgemeinen die Dokumentation lesen, um sicherzugehen. Als entgegengesetztes Beispiel ist QtQVector
in dieser Hinsicht leichter zu verstehen, da es sich um eine Methode zur Überprüfung der Leere handeltQVector::isEmpty()
.Erwähnenswert ist, dass auch das Präfix " sollte " verwendet werden kann. Nach der Apple-Richtlinie können Modalverben nicht nur " können " und " sollten " verwendet werden, um Funktionen zu benennen, die boolesche Werte zurückgeben. Ich kann nicht sehen , wie oft " will " verwendet wird, aber " should " ist gut geeignet, um nach Ratschlägen zu fragen.
quelle
WillCloseConnection
?is...
aber verwendenshould...
in einigen Funktionsargumentnamen Stellen, an denen der Boolesche Wert angibt, in was die Funktion die Dinge ändern soll . Wenn eine Funktion kann optional ein Dokument schließen, um den Parameter Controlling aufrufen , dieisClosed
genau sein würde (es ist nicht geschlossen noch ) und so würden wir verwenden ,shouldClose
um anzuzeigen , dass das ist , was die Funktion tun soll. (Beliebiges Beispiel; wir hätten wahrscheinlich keine Funktion wie diese, zumal das Schließen eines Dokuments schwer genug sein sollte, um einen dedizierten Anruf zu erhalten.)will...
ist es für asynchrone Funktionen reserviert, die ein Versprechen zurückgeben. Wenn die in meinem vorherigen Kommentar beschriebene Funktion synchron ist, ist die Verwendung vonwill...
nicht mit unserer Benennung vereinbar.