39 votes

Où est le meilleur endroit pour localiser les types enum?

J'ai constaté qu'il existe généralement un type ou un espace de noms unique qui prend enumen particulier une énumération en tant que paramètre et, par conséquent, j'ai toujours défini ces énumérations. Récemment cependant, un de mes collègues a beaucoup insisté sur le fait que c'était une chose stupide à faire, et vous devriez toujours avoir un espace de noms enum à la racine de votre projet où vous définissez tous les types de votre enum.

Où est le meilleur endroit pour localiser les types enum?

43voto

Jon Skeet Points 692016

Pourquoi traiter les enums différemment des autres types? Conservez-les dans le même espace de noms, car ils sont susceptibles d'être utilisés par d'autres classes, transformez-les en types de niveau supérieur dans leurs propres fichiers.

Le seul type de type que je n'agglutiner souvent ensemble est délégués - j'ai parfois un fichier Delegates.cs avec un groupe de délégués en moins avec .NET 3.5 et Func / Action, vous l' esprit..

8voto

Nick Points 5505

De plus, les espaces de noms servent à séparer logiquement les choses qui vont ensemble. Toutes les classes n'appartiennent pas au même espace de noms simplement parce qu'elles sont des classes. De même, tous les enums n'appartiennent pas au même espace de noms simplement parce qu'ils sont des enums. Mettez-les avec le code auquel ils appartiennent logiquement.

4voto

Daniel Schaffer Points 14707

De manière générale, j'essaie de mettre toutes mes différents types (classes, interfaces et les énumérations) dans leurs propres fichiers, indépendamment de la façon dont ils sont petits. Il est tout simplement beaucoup plus facile de trouver et de gérer les fichiers de ils sont, surtout si vous n'avez pas arriver à être dans Visual Studio et ont "aller à la définition de" fonctions disponibles. J'ai trouvé que presque chaque fois que j'ai mis un "simple" type comme ça dans une autre classe, je me retrouve soit en ajoutant par la suite, ou la réutilisation d'une façon qui n'a plus de sens pour elle de ne pas avoir son propre fichier.

Dans la mesure où un espace de noms, il dépend vraiment de la conception de ce que vous êtes en développement. En général, j'essaie d'imiter l' .NET cadre de la convention.

4voto

DOK Points 21175

J'ai essayer de mettre le tout associé à une classe dans la classe. Qui ne comprend pas seulement les énumérations, mais aussi des constantes. Je ne veux pas aller chercher ailleurs pour la classe ou du fichier contenant les énumérations. Dans un grand app avec beaucoup de classes et de dossiers, il n'est pas toujours évident où mettre la enum fichier de sorte qu'il serait facile à trouver.

Si l'enum si elle est utilisée dans plusieurs des catégories, vous pouvez créer une classe de base, de sorte que les types les plus courants comme les énumérations sont partagés là.

Bien sûr, si un enum est vraiment générique et largement utilisé, vous souhaiterez peut-être créer une catégorie distincte pour eux, le long de avec d'autres génériques de services publics.

4voto

Al C Points 41

Je pense que vous mettez les Énumérations et des Constantes dans la classe qui consomme ou utilise à des codes de contrôle des décisions les plus et que vous utilisez la complétion de code pour les trouver. De cette façon, vous n'avez pas à se rappeler où ils sont, ils sont associés à la classe. Donc par exemple si j'ai un ColoredBox classe alors je n'ai pas à penser à où ils en sont. Ils seraient une partie de ColoredBox. ColoredBox.Couleurs.Rouge, ColoredBox.Couleurs.Bleu etc. J' Je pense à l'enum et constante comme une propriété ou à la description de cette classe. Si elle est utilisée par plusieurs classes, et pas une classe règne en maître alors qu'il est approprié d'avoir une enum class ou classe des constantes. Cela suit les règles de l'encapsulation. Isoler les propriétés de différents classes. Que faire si vous décidez de modifier le RVB de Rouge dans Cirle objets, mais vous ne voulez pas changer le rouge pour ColoredBox objets? L'encapsulation de leurs propriétés permet cela.

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