14 votes

Existe-t-il un moyen standard de diviser une classe en régions ?

Je me demandais s'il existe un moyen standard de diviser une classe en régions. Presque chaque projet utilise une "approche par région" différente (même les classes d'un même projet).

Nous accordons tellement d'attention aux conventions de dénomination et si peu à la structure de la classe. Je pense que l'introduction d'une certaine norme nous permettra de nous lancer beaucoup plus facilement dans un nouveau code.

J'utilise par exemple la méthode suivante :

public class SomeClass
{
     #region Consts
     #endregion

     #region Fields
     #endregion

     #region Properties
     #endregion

     #region Construction
     #endregion

     #region Public Methods
     // Class's API
     #endregion

     #region Overrides
     // Different region for each class override
     #endregion

     #region Private Helpers
     // private methods used only to support external API Methods
     #endregion
}

Ceci est pour une classe de base bien sûr. Quand la classe est plus compliquée, plus de régions sont introduites (Destruction, Méthodes Abstraites et ainsi de suite).

Qu'en pensez-vous ? Quelles régions utilisez-vous dans vos cours ?

EDIT

Après avoir lu certaines des réponses, j'ai l'impression que je dois affiner la question (Alt + Enter si vous voyez ce que je veux dire :)) :

Pensez-vous que l'utilisation de régions peut améliorer la lisibilité de votre code ? Si oui, pensez-vous que l'introduction d'une manière standard de le faire simplifiera la façon dont nous lisons le code des autres ?

Une autre édition

A propos de la question de la responsabilité unique - je n'ai pas introduit de régions comme "traitement des fichiers" ou "traitement des entrées". Les régions que j'ai utilisées sont celles qui seront probablement présentes dans n'importe quelle classe que vous écrirez. Parfois, je voudrai voir seulement l'API que cette classe expose et d'autres fois, je voudrai voir seulement les méthodes privées ou les surcharges. encore une fois, dans ce cas, je ne vois pas de mal à cacher un peu de code.

41voto

dove Points 12456

Je n'utilise plus du tout de régions, je trouve que cela aide à garder la taille de la classe plus serrée car le besoin de tant de régions pourrait être un signe que la classe devient trop grande.

28voto

Mitch Wheat Points 169614

N'utilisez pas de régions Ils sont contre-productifs.

Les régions rendent-elles votre code plus lisible ? Non . Le fait que le code soit caché le rend illisible !

Si vous avez envie de cacher du code, c'est que la classe en fait probablement trop (et rompt le principe de responsabilité unique).

Refactoriser en classes séparées plutôt que de cacher le code.

Voir le billet de Jeff Atwood : Le problème du pliage de code

8voto

XXXXX Points 667

Le fait que vous demandiez et que vous demandiez ici est une bonne preuve qu'il n'y a pas standard Les normes sont, par définition, omniprésentes.

Il y a bien sûr mieux et pire façons (et, comme le fait remarquer Colombe, aucune façon n'est l'une des façons). Mais vous pouvez probablement vous en rendre compte par vous-même, ou utiliser les préférences d'un outil tel que Resharper.

Le fait d'être cohérent en interne d'une manière qui vous semble naturelle et logique est probablement suffisant.

7voto

SwDevMan81 Points 22634

Je dois dire que je n'ai jamais entendu quelqu'un dire : "Je n'avais pas remarqué que la taille de la classe devenait plus importante, maudites régions". Nous sommes tous des gens intelligents ici et nous devrions être capables de déterminer si nous devons adopter une nouvelle approche (ou revoir la conception) de notre travail s'il commence à sentir mauvais. Quant à la norme, il n'y en a pas à ma connaissance. C'est plutôt une question de préférence personnelle. J'aime définir mes régions de la manière suivante :

1) Constantes
2) Membres
3) Constructeur/Finalisateur
4) Propriétés (get/set)
5) Aide

Les régions n'améliorent pas la lisibilité de votre classe, surtout si quelqu'un d'autre la regarde. Il est plus que probable qu'ils devront regarder tout le code de toute façon, mais cela aidera à organiser les choses pour les rendre plus faciles à trouver et à garder le défilement à un minimum lorsque vous travaillez sur une partie sélectionnée d'une classe. Voir les raccourcis clavier CTRL+M + M, L, O, P, si vous voulez minimiser/maximiser les régions.

3voto

Brian Rasmussen Points 68853

Resharper peut réorganiser votre fichier comme ça. Je ne me souviens pas s'il peut également insérer des balises de région. Je n'aime pas vraiment les régions moi-même, donc je ne me suis pas penché sur la question.

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