Quelle convention de dénomination pour le fichier C # qui contient plusieurs classes?


20

Dans les projets C #, nous regroupons fréquemment des classes petites et étroitement liées dans le même .csfichier. Cette pratique réduit le frottement lié au traitement d'une myriade de fichiers contenant presque aucun code réel. Pourtant, existe-t-il une pratique établie pour nommer le fichier qui contient plusieurs classes?


13
franchement je préfère un fichier une classe même pour les très petites classes
Felice Pollano

Vous pouvez choisir de le nommer selon le groupe auquel appartiennent ces classes étroitement liées.
V4Vendetta

Peut-être que ces classes sont trop petites? Personnellement, je ne regroupe que plusieurs énumérations dans un seul fichier (parfois avec la classe, parfois toutes les énumérations ensemble, selon le contexte).
Konrad Morawski

@Felice: regardez MSpec :)
Bryan Boettcher

Réponses:


18

Mon conseil: évitez les fichiers contenant plusieurs classes et nommez les fichiers == classes même si vous voulez dire qu'il y a trop de fichiers. Essayez de les organiser dans des dossiers. Dans des cas très particuliers, vous pouvez avoir des classes imbriquées. Dans ce cas, il est logique de séparer la classe principale et une classe imbriquée dans différents fichiers ayant une classe partielle. Dans ce cas, j'utilise la convention de dénomination suivante.

MyEnumerable.cs
MyEnumerable.MyEnumerator.cs

Vous pouvez probablement également utiliser des noms de fichiers en plusieurs parties dans votre cas.


4
Encore une idée. Vous pouvez regrouper plusieurs fichiers .cs dans Visual Studio Project afin qu'ils apparaissent tous sous le même nœud dans l'arborescence (comme les fichiers .Designer.cs). Cela vous signalera que les classes sont étroitement liées.


4

Considérez qu'en posant une question sur la façon de nommer ces fichiers, vous avez déjà identifié une odeur de code qui vous pose problème, et c'est un problème qui ne disparaîtra pas facilement.

Quel que soit le raisonnement, vous constaterez qu'il est difficile de choisir des noms sensés lorsque vous avez plusieurs classes dans un fichier, car même si les fichiers sont liés d'une manière ou d'une autre, il y aura toujours la tentation de jeter quelque chose qui ne correspond pas tout à fait au nom de groupe que vous attribuez à un ensemble de classes.

La réponse courte est donc qu'il n'y a pas de norme reconnue ou établie pour nommer ces types de fichiers. Ma suggestion serait de vous asseoir avec votre équipe et de regarder l'organisation de votre code, et d'appliquer un peu d'effort de refactorisation pour ranger un peu les choses.

Cependant, pour rendre les choses un peu plus faciles au début, je demanderais si les classes supplémentaires sont imbriquées ou indépendantes. Si elles sont indépendantes, ces classes peuvent être plus facilement divisées en leurs propres fichiers, chaque fichier étant nommé pour la classe unique contenue dans. Si elles sont imbriquées, alors il faudra peut-être prendre d'autres décisions sur la façon dont ces classes doivent être organisées, mais les classes imbriquées peuvent ne pas avoir besoin d'être supprimées immédiatement, et les fichiers seront donc nommés pour la classe la plus externe. En ce qui concerne l'imbrication, il y a beaucoup d'arguments contre, et quelques arguments raisonnables pour l'imbrication dans certaines circonstances, et mon conseil serait de demander si un espace de noms sensé et la création d'une structure de code source plus organisée pourraient être une meilleure façon d'aborder le problème.

De manière réaliste cependant, vous constaterez qu'à la fin de la durée de vie de votre projet, vous aurez souhaité que tous vos fichiers ne contiennent qu'une seule classe et une belle structure de répertoire / espace de noms pour l'accompagner.

À votre santé,


3

Auparavant, j'étais tout pour avoir plusieurs classes dans un seul fichier, mais depuis que j'ai commencé à travailler en tant que programmeur (plutôt que d'être seul), j'ai constaté que cela pouvait être un cauchemar de maintenance avec de nombreuses classes dans un seul fichier. Bien que, certes, Visual Studio puisse beaucoup aider en utilisant F12 (aller à la définition).

Ce que j'ai commencé à faire, c'est d'utiliser une convention de dénomination comme suit: namespace.classname.cs De cette façon, je sais exactement ce qu'il y a dans chaque fichier et cela fournit également une sorte de contexte général du fichier. Si la classe va se trouver dans l'espace de noms par défaut, alors je vais de l'avant et j'utilise simplement classname.cs (similaire à Java).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.