it-swarm.com.de

Benennung von Bool-Methoden: Ist vs. Kann vs.?

Welches ist der bessere Name für eine Methode, die einen Booleschen Wert zurückgibt?

IsSupportContentType

oder

CanSupportContentType
56
Mediator

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)
108
John Wu

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
9
Harry