778 votes

Ordre des éléments dans les classes: Champs, Propriétés, Constructeurs, Méthodes

Est-il un C# officiel d'orientation pour l'ordre des éléments en termes de structure de classe?

Va-t-elle:

  • Champs Publics
  • Champs Privés
  • Propriétés
  • Les constructeurs
  • Méthodes
    ?

Je suis curieux de savoir si il y a une règle dure et rapide sur l'ordre des éléments? Je suis un peu dans tous les sens. Je veux m'en tenir à une norme particulière, donc je peux le faire partout.

Le vrai problème, c'est mon plus complexe des propriétés de l'air beaucoup comme des méthodes et qu'ils se sentent à leur place dans le haut avant que le constructeur.

Des conseils/suggestions?

1208voto

Jonathan Wright Points 3146

Selon le StyleCop Règles de la Documentation de la commande est la suivante.

Au sein d'une classe, struct ou de l'interface: (SA1201 et SA1203)

  • Champs Constants
  • Champs
  • Les constructeurs
  • Les Finaliseurs (Destructeurs)
  • Les délégués
  • Les événements
  • Les Enums
  • Interfaces
  • Propriétés
  • Les indexeurs
  • Méthodes
  • Les structures
  • Les Classes

Au sein de chacun de ces groupes, par ordre d'accès: (SA1202)

  • public
  • interne
  • interne protégée
  • protégé
  • privé

Au sein de chacun des groupes d'accès, commande en statique, puis non-statique: (SA1204)

  • statique
  • non statique

Au sein de chaque de la statique/non-statique groupes de domaines d'études, commande en lecture seule, alors non en lecture seule : (SA1214 et SA1215)

  • readonly
  • non-readonly

Un déroulé de la liste est de 130 lignes de long, donc je ne vais pas dérouler ici. Les méthodes de la partie est déroulé:

  • méthodes statiques publiques
  • méthodes publiques
  • interne des méthodes statiques
  • les méthodes internes
  • interne protégée méthodes statiques
  • protégé méthodes internes
  • protégé des méthodes statiques
  • les méthodes protected
  • privé méthodes statiques
  • les méthodes privées

La documentation indique que si l'ordre n'est pas approprié --- dire, de multiples interfaces sont mises en œuvre, et l'interface des méthodes et des propriétés devraient être regroupés --- ensuite, utilisez une classe partielle de groupe connexes, les méthodes et les propriétés de l'ensemble.

47voto

Kyralessa Points 76456

Plutôt que de regrouper par visibilité ou par type d'élément (champ, propriété, méthode, etc.), que diriez-vous de regrouper par fonctionnalité?

15voto

Elijah Manor Points 8991

Je vous conseille d'utiliser les normes de codage de IDesign ou celles qui figurent sur Brad Abram site web. Ceux sont les deux meilleurs que j'ai trouvé.

Brad dirais...

Les Classes de membre doivent être classés par ordre alphabétique, et regroupés en sections (Champs, Constructeurs, des Propriétés, des Événements, des Méthodes, des Privés, des implémentations d'interface, les types Imbriqués)

6voto

Mitchel Sellers Points 38352

Comme mentionné précédemment, il n'y a rien dans le langage C # qui dicte la mise en page, j'utilise personnellement les régions, et je fais quelque chose comme ça pour une classe moyenne.

 public class myClass
{
#region Private Members

#endregion
#region Public Properties

#endregion

#region Constructors

#endregion
#region Public Methods

#endregion
}
 

Cela a du sens pour moi de toute façon

5voto

blowdart Points 28735

De StyleCop

champs privés, champs publics, constructeurs, propriétés, méthodes publiques, méthodes privées

Comme StyleCop fait partie du processus de construction MS, vous pouvez le considérer comme une norme de facto

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