Question

Bonjour,

Je suis un débutant à OO et à la programmation et j'ai la situation suivante:

J'ai un ensemble de valeurs et énumérations const que plusieurs des classes je mets en œuvre l'action.

Ces classes sont indépendantes dire autre que le partage de ces valeurs, ils n'interagissent pas les uns avec les autres, afin de les héritant ne fonctionneront pas.

Je me demandais; Si je crée une classe vide avec seulement ces consts et énumérations et déclare un objet de ces classes dans chaque classe alors je pourrais utiliser ces valeurs comme:

globals.enum.enummember?

Est-ce la programmation sonore ou est-il une meilleure façon de le faire?

Merci pour votre temps.

Était-ce utile?

La solution

La meilleure pratique est de simplement déclarer les énumérations aux côtés de vos classes, et non imbriquées dans une classe. En fait, les types imbriqués sont généralement une mauvaise idée, à moins qu'ils soient privés. Il y a des exceptions, bien sûr, mais pour la plupart vous êtes mieux sans imbrication.

Constantes doivent être définies dans une classe, mais vous n'avez pas besoin d'instancier un objet de la classe pour les utiliser. En outre, ils peuvent être publics, de sorte que vous n'avez pas besoin d'hériter quoi que ce soit. Si vous pensez à ce sujet assez dur, vous devriez être en mesure de trouver un bon nom pour la classe qui contient ces constantes.

La pratique montre que les constantes et énumérations sont rarement simplement mondiale. La plupart du temps, ils sont étroitement couplés avec un ou quelques classes. Vous devez ensuite définir ces constantes comme une partie de la classe appropriée et de mettre énumérations dans le même espace que la classe les utiliser.

Autres conseils

Vous pouvez utiliser la classe statique avec des membres statiques pour obtenir le comportement souhaité:

namespace A {
    public static class Enum1 {
       public static readonly int EnumMember1 = 1;
       public static readonly int EnumMember2 = 2;
       public static readonly int EnumMember3 = 3;
    }
}

Vous devez utiliser ce de la manière suivante:

int x = A.Enum1.EnumMember2;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top