Imaginons que j'ai défini l'Enum suivante :
public enum Status : byte
{
Inactive = 1,
Active = 2,
}
Quelle est la meilleure pratique pour utiliser les enum ? Doit-on commencer par 1
comme dans l'exemple ci-dessus ou commencer par 0
(sans les valeurs explicites) comme ceci :
public enum Status : byte
{
Inactive,
Active
}
14 votes
Faut-il vraiment les numéroter explicitement ?
168 votes
Les Enums ont été créés juste pour que ce genre de choses n'ait pas d'importance.
9 votes
@Daniel -- arrgh non ! Il est préférable d'utiliser un enum lorsque vous pensez à un booléen fera l'affaire plutôt que d'utiliser un booléen lorsque vous pensez à une énumération.
22 votes
@Daniel à cause de la valeur FileNotFound, bien sûr.
1 votes
@AAT : stackoverflow.com/questions/1240739/
0 votes
@Adam - Je suis d'accord pour dire que cette question est liée à ce problème (bien qu'elle concerne spécifiquement les paramètres booléens des fonctions) mais je pense qu'il y a également de solides arguments contre l'utilisation des booléens pour les membres / variables dans de nombreux cas. Il y a sont des choses qui n'ont véritablement que deux états et n'en auront jamais un troisième, mais une fois que l'on passe du "monde réel" au domaine des logiciels, elles sont en fait assez rares, à l'exception des conditions calculées (pour lesquelles les booléens sont bien sûr parfaitement adaptés).
3 votes
@Daniel : La sécurité du type est une autre considération.
6 votes
xkcd.com/163 s'applique aux enum encore mieux qu'aux indices de tableaux.
0 votes
Ce XKCD s'applique à ceci d'une manière ou d'une autre :) C'est assez absurde...
0 votes
@DanielA.White vous ne devriez jamais utiliser une
boolean
pour quelque chose qui n'est pas intrinsèquement une question "oui/non", même si elle n'a que deux valeurs possibles. En dehors du fait qu'il pourrait ajouter un autre statut la semaine prochaine appelé "Pending", etc., cela rend simplement le code plus lisible et compréhensible pour les humains. -- (Ce n'est pas parce que vous pouvez transformer quelque chose en une question "oui/non" que vous devez le faire. -- Si quelqu'un vous demandait votre statut, vous ne diriez pas "oui").1 votes
@Yuck, Oui je recommanderais de numéroter explicitement les enums. La raison en est que tout réordonnancement des éléments de l'enum modifierait leur valeur. Or, si vous stockez ces valeurs dans une base de données, les données ne seront pas synchronisées avec le code. Si elles sont explicites, le réordonnancement ne change pas leurs valeurs.
0 votes
@BoltClock, pas vrai. Les valeurs sont importantes, elles ont été créées pour que vous puissiez avoir des collections de valeurs significatives sans avoir à vous battre avec des constantes et à créer l'association vous-même. Ne pas commencer à 0 est un bon moyen d'établir qu'elles doivent être définies explicitement et de prévenir les erreurs lorsqu'une valeur unitialisée semble être définie intentionnellement.