web-dev-qa-db-fra.com

Dénomination des méthodes booléennes: vs vs vs vs?

Quel est le meilleur nom pour une méthode qui renvoie un booléen?

IsSupportContentType

ou

CanSupportContentType
56
Mediator

Is vs Can

Selon les recommandations de convention de dénomination Microsoft , "Is" et "Can" sont OK (et donc "Has") comme préfixe pour un booléen.

En clair, "Is" serait utilisé pour identifier quelque chose sur le type lui-même, et non pas ce qu'il peut faire. Par exemple, IsFixed, IsDerivedFrom, IsNullable se trouvent tous dans les types et méthodes CLR. Dans tous ces cas, "Is" est suivi d'un adjectif .

Pendant ce temps, "peut" indique plus clairement une capacité, par exemple CanEdit, CanRead, CanSeek. Dans chacun de ces cas, can est suivi d'un verbe .

Puisque "Support" est un verbe, je pense que dans votre cas, CanSupportContentType est mieux.

Alternative plus courte

D'un autre côté, les conventions disent que le préfixe est facultatif. De plus, il est un peu ringard d'inclure le type d'argument dans le nom de la méthode, car un développeur peut voir le type de l'argument dans intellisense. Donc vous pourriez nommez simplement votre méthode Supports et définissez-la comme ceci:

public bool Supports(System.Net.Mime.ContentType contentType)

... qui est plus court et communique clairement le but. Vous l'appeleriez comme ceci:

ContentType contentType = new ContentType("text/plain");
var someClass = new MediatorsClass();
bool ok = someClass.Supports(contentType);

Ou comme compromis, c'est peut-être le meilleur:

public bool CanSupport(System.Net.Mime.ContentType contentType)
108
John Wu

Il convient de mentionner que le préfixe " devrait" peut également être utilisé. Selon la directive d'Apple , pas seulement " peut" et " devrait", les verbes modaux en général peuvent être utilisés pour nommer des fonctions ce retour booléen. Je ne vois pas beaucoup d'utilisation de " sera" mais " devrait" est bien pour les crochets qui demandent des conseils, comme on le voit dans reactjs:

shouldComponentUpdate: (newProps: any) => boolean
9
Harry