103 votes

Singulier ou pluriel pour les énumérations ?

Utilisez-vous le singulier ou le pluriel pour les énumérations ? Je pense qu'il est plus logique d'utiliser le pluriel dans la déclaration.

enum Weekdays
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

... mais je pense que cela a plus de sens avec le singulier quand on utilise le type, par ex.

Weekday firstDayOfWeek = Weekday.Monday;

J'ai lu quelque part une recommandation d'utiliser le singulier avec les enums réguliers et le pluriel avec les drapeaux, mais j'aimerais connaître les avantages et les inconvénients.

1 votes

Il devrait s'agir d'énumérations et non d'énumérateurs.

1 votes

102voto

Matt Points 1058

Le voici, directement de Microsoft :

http://msdn.microsoft.com/en-us/library/4x252001(VS.71).aspx

U mais utilisez un nom pluriel pour les types Enum qui sont des champs binaires.

1 votes

Avec la remarque que les champs de bits doivent être mis au pluriel.

2 votes

Voici la dernière version des MSDN Guidelines for Enumeration Design : msdn.microsoft.com/fr/us/library/ms229058.aspx

0 votes

Un livre que je suis très reconnaissant d'avoir lu est le Directives de conception du cadre . Il est écrit par plus de 15 auteurs qui ont tous joué un rôle important dans le développement du framework .NET au fil des ans. Le livre vous donne un aperçu de leur processus de réflexion lorsqu'ils développent les API du framework, et ce faisant, il vous rend presque clairvoyant lorsqu'il s'agit de naviguer dans n'importe quel framework, boîte à outils, etc. de Microsoft. Une grande partie, sinon la totalité, du texte peut être trouvée sur le site Web de la documentation de l'entreprise, mais ce livre est très bien présenté.

30voto

Michael Petrotta Points 35647

Une recommandation vient de l'initiative .NET Directives de conception du cadre , page 59-60 :

Faites utiliser un nom de type singulier pour une énumération, u champs.

public enum ConsoleColor {
  Black,
  Blue,
  Cyan,
  ...

Faites utiliser un nom de type pluriel pour une énumération avec des champs de bits comme valeurs, également appelée une énumération de drapeaux.

[Flags]
public enum ConsoleModifiers {
  Alt,
  Control,
  Shift
}

15voto

Mehrdad Afshari Points 204872

Dans le .NET Framework, la plupart des enums "normaux" (par ex. DayOfWeek ) ont des noms singuliers et les enums de drapeaux (par ex. StringSplitOptions , BindingFlags ) ont des noms pluriels. C'est logique, puisque la valeur d'un enum flag peut représenter plusieurs éléments, mais pour un enum non-flag, elle ne peut représenter qu'un seul élément.

5voto

Pedro Alves Points 1

En général, je considère qu'une définition d'enum est une définition de type, les valeurs de l'enum étant les différentes valeurs que le type peut avoir. étant les différentes valeurs que le type peut avoir ; elle obtient donc un s enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }; enum CoffeeSize { SMALL, MEDIUM, LARGE };

Oui. Si vous faites l'expérience mentale d'implémenter les enums comme des classes, alors le fait que vous utilisiez un nom singulier pour le type devrait révéler que cela qu'il est logique d'utiliser des noms singuliers pour de tels enums. Par exemple,

struct Weekday {};

const Weekday SUNDAY;
const Weekday MONDAY;
const Weekday TUESDAY;

...

void func (Weekday *day)
{
   if (day == &SUNDAY)
       ...
}

Pour ceux qui préfèrent les pluriels dans les enums, vous nommeriez cela struct Weekdays ?

2voto

Brian Gideon Points 26683

Microsoft recommande l'utilisation d'un nom singulier pour les énumérations, à moins qu'il n'utilise la fonction Flags attribut. Et comme indiqué dans le livre Framework Design Guidelines, vous ne devez pas suffixer les noms de type d'énumération avec Enum, Flags, etc. et vous ne devez pas préfixer les valeurs d'énumération avec une abréviation ou un acronyme, comme c'était courant avec les énumérations VB à l'époque.

0 votes

Mais y a-t-il vraiment une raison à cela ? Nous préfixons les interfaces par "I". Pourquoi ne pas préfixer les enums par 'E' et les flags par 'F'. Cela rendrait les choses parfaitement claires. Notez que je n'aime pas préfixer quoi que ce soit d'autre, mais il s'agit de cas particuliers comme les interfaces où le type ne changera jamais.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X