169 votes

Nommer des énumérations en Java : Singulier ou Pluriel ?

Y a-t-il une recommandation "officielle" sur la façon de nommer les énumérations Java?

enum Protocol { HTTP, HTTPS, FTP }

ou

enum Protocols { HTTP, HTTPS, FTP }

Je sais que dans le monde .Net, la recommandation est d'utiliser le singulier sauf pour les énumérations qui représentent des indicateurs de bits. Juste curieux de savoir s'il y a quelque chose de similaire en Java.

Une question connexe qui semble spécifique à .Net: Singulier ou pluriel pour les énumérations?

206voto

Avram Score Points 966

Les énumérations en Java (et probablement les énumérations en général) devraient être au singulier. L'idée est que vous ne sélectionnez pas plusieurs Protocoles, mais plutôt un Protocole parmi les choix possibles dans la liste des valeurs.

Notez l'absence de pluriels : http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

21voto

Josep M. Panadero Points 445

De la même manière que lorsque vous définissez un nom de table dans une base de données ou une classe en Java, vous utilisez le singulier pour les énumérations, c'est également la meilleure option. Regardez simplement comment vous allez l'utiliser.

Écrivons un exemple:

public enum Jour {
DIMANCHE, LUNDI, MARDI, MERCREDI, JEUDI, VENDREDI, SAMEDI
}

class RendezVous {
private Jour jour;

public void setJour(Jour jour) {
    this.jour = jour;
}
}

Sous sa forme singulière, on voit clairement l'intention de l'attribut jour. "jour" c'est le jour de la semaine où ce rendez-vous aura lieu. Sinon, la signature de la méthode aurait été setJour(Jours jour) et beaucoup de gens se demanderaient certainement si le rendez-vous pourrait avoir lieu en plus d'un jour.

Si vous travaillez dans une entreprise qui a des quarts de travail de 48 heures, vous pourriez essayer de définir quelque chose comme:

public enum Jours {
LUNDI_MARDI, MERCREDI_JEUDI, VENDREDI_SAMEDI
}

De cette manière, vous pourriez définir les jours où vous allez travailler. Mais cela aura toujours l'air bizarre et il y a une meilleure option qui est d'utiliser la forme singulière:

public enum Quart {
LUNDI_MARDI, MERCREDI_JEUDI, VENDREDI_SAMEDI
}

Maintenant, vous montrez vraiment la signification de l'énumération. Habituellement, dans n'importe quel domaine, vous constaterez qu'utiliser le singulier pour une énumération est la meilleure option, car chaque constante de l'énumération est juste un élément.

Vous mentionnez également .NET. Une énumération "flags" en .NET signifie simplement que lorsque vous attendez cette énumération en tant que paramètre, ce que vous obtenez vraiment est une liste d'éléments de cette énumération (stockée sous forme d'entier).

// Définir une énumération avec l'attribut FlagsAttribute.
[FlagsAttribute] 
enum MultiTeinte : short
{
    Noir = 0,
    Rouge = 1,
    Vert = 2,
    Bleu = 4
};

public void setMultiTeinte(MultiTeinte teintes);

Vous pourriez faire la même chose en Java, mais l'énumération restera singulière:

public enum Teinte {
NOIR, ROUGE, VERT, BLEU;
private final Integer teinte;

Teinte() {
    this.teinte = 1 << this.ordinal();
}

public Integer toFlag() {
    return this.teinte;
}
}

public class MultiTeinte {
private Integer teintes = 0;

public void addTeinte(Teinte teinte) {
    this.teintes |= teinte.toFlag();
}

public boolean hasTeinte(Teinte teinte) {
    return (this.teintes & teinte.toFlag()) != 0;
}
}

Une manière plus simple et claire (bien que cela utilise plus de mémoire) de le faire avec Java est simplement d'utiliser une Liste.

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