web-dev-qa-db-fra.com

Singulier ou pluriel pour les énumérations?

Utilisez-vous le singulier ou le pluriel pour les énumérations? Je pense que c'est plus logique avec 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 singulier lorsque vous utilisez le type, par ex.

Weekday firstDayOfWeek = Weekday.Monday;

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

65
Jan Aagaard

Ici, il vient directement de Microsoft:

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

Utilisez un nom unique pour la plupart des types Enum , Mais utilisez un nom au pluriel pour les types Enum Qui sont des champs de bits. 

68
Matt Ruwe

Une recommandation provient de .NET Framework Design Guidelines , pages 59-60:

Do utilise un nom de type singulier pour une énumération, sauf si ses valeurs sont des champs de bits .

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

Do utilise un nom de type au pluriel pour une énumération avec des champs de bits en tant que valeurs, également appelé indicateur enum.

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

Dans le .NET Framework, la plupart des énumérations "normales" (par exemple, DayOfWeek) ont des noms singuliers et les énumérations de drapeau (par exemple, StringSplitOptions, BindingFlags) ont des noms au pluriel. Cela a du sens, puisqu’une valeur d’un flag enum peut représenter plusieurs éléments, mais pour un non-flag, elle ne peut représenter qu’un seul élément.

11
Mehrdad Afshari

En général, je considère une définition d’énum comme une définition de type, les valeurs de Étant les différentes valeurs que le type peut avoir; donc il prend un nom singulier: 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 en tant que classes, alors Le fait que vous utilisiez un nom singulier pour le type devrait révéler 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 qui préfère les pluriels dans les énumérations, voudriez-vous nommer ce struct Weekdays?

2
Pedro Alves

Microsoft recommande en utilisant un nom unique pour les énumérations, à moins que l'attribut Flags ne soit utilisé. Et tel qu'il est tiré du livre Framework Design Guidelines, vous ne devez pas ajouter de suffixe aux noms de types d'énumération avec Enum, Flags, etc., ni préfixer les valeurs d'énumération avec une abréviation ou un acronyme, comme c'était le cas avec les énumérations VB de la journée.

2
Brian Gideon

En général, je considère une définition enum comme une définition de type, ses valeurs étant les différentes valeurs que le type peut avoir; donc il prend un nom singulier:

enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };

enum CoffeeSize { SMALL, MEDIUM, LARGE };
1
Avi

Comme C #/convention Microsoft, les énumérations en Java doivent être singulières: http://docs.Oracle.com/javase/tutorial/Java/javaOO/enum.html

0
tanguy_k

C'est subjectif et peu importe ce que vous utilisez, tant que vous êtes cohérent (personnellement, j'utilise le singulier comme un report de mes conventions SQL)

0
Jaimal Chohan