Welches ist der bessere Name für eine Methode, die einen Booleschen Wert zurückgibt?
IsSupportContentType
oder
CanSupportContentType
Is vs. Can
Gemäß Empfehlungen der Microsoft-Namenskonvention sind sowohl "Is" als auch "Can" als Präfix für einen Booleschen Wert in Ordnung (und "Has" auch).
Im Klartext wird "Is" verwendet, um etwas über den Typ selbst zu identifizieren, nicht über das, was er kann. Zum Beispiel können IsFixed
, IsDerivedFrom
, IsNullable
alle in CLR-Typen und -Methoden gefunden werden. In all diesen Fällen folgt auf "Is" ein Adjektiv .
In der Zwischenzeit zeigt "kann" deutlicher eine Fähigkeit an, z. CanEdit
, CanRead
, CanSeek
. In jedem dieser Fälle folgt auf can ein Verb .
Da "Support" ein Verb ist, denke ich, dass in Ihrem Fall CanSupportContentType
besser ist.
Kürzere Alternative
Andererseits sagen die Konventionen, dass das Präfix optional ist. Darüber hinaus ist es etwas kitschig, den Argumenttyp in den Methodennamen aufzunehmen, da ein Entwickler den Typ des Arguments in Intellisense sehen kann. Sie könnte benennen Sie einfach Ihre Methode Supports
und definieren Sie sie wie folgt:
public bool Supports(System.Net.Mime.ContentType contentType)
... was kürzer ist und dennoch den Zweck klar kommuniziert. Sie würden es so nennen:
ContentType contentType = new ContentType("text/plain");
var someClass = new MediatorsClass();
bool ok = someClass.Supports(contentType);
Oder als Kompromiss ist dies vielleicht das Beste:
public bool CanSupport(System.Net.Mime.ContentType contentType)
Erwähnenswert ist, dass auch das Präfix " sollte " verwendet werden kann. Nach Apples Richtlinie kann nicht nur "" und " sollte ", Modalverben können im Allgemeinen verwendet werden, um Funktionen zu benennen, die boolesche Werte zurückgeben. Ich kann nicht viele Verwendungen von " will " sehen, aber " sollte "ist nett für Ratschläge fragende Haken, wie in reagjs zu sehen:
shouldComponentUpdate: (newProps: any) => boolean