
Envoyé par
DonQuiche
Ah ! Pour moi un fichier par classe est un exemple de mauvaise pratique. Et je peux invoquer de grands noms comme Robert Martin et son Clean Code à mes côtés pour défendre cette vision.
Le problème est simple : si je cherche une classe par son nom, j'ai des quantités de moyens pour ça, depuis le "go to definition" jusqu'à "ctrl + virgule" en passant par la Class View ou l'Object Browser. Je n'ai donc pas besoin d'avoir un fichier par classe, ça n'apporte aucune valeur ajoutée. Au contraire, cela introduit de la pollution visuelle dans l'explorateur de solution et rend difficile la lecture du projet et alourdit son utilisation au quotidien.
Pour moi un fichier est une structure hiérarchique au même titre que la classe, la méthode, etc. C'est donc le niveau au-dessus de la classe et il permet si besoin de montrer l'articulation de certaines classes entre elles. Un fichier peut donc contenir toutes les petites variantes d'une classe de base, ou aussi les quelques types intermédiaires qui participent d'un même traitement. L'idée est qu'en ouvrant la solution on voit quelque chose qui ressemble à ce qu'on attendait a priori, et que les objets intermédiaires, similaires ou connexes soient rassemblés dans un même fichier. Client.cs contiendra Client, ClientManager, ListOfClient, etc. List contiendra List et ListEnumerator. Etcétéra. Un fichier représente davantage un concept
Enfin cela ouvre un avantage non-négligeable : découpler le nom du fichier du nom exact de la classe. Ainsi il peut être intéressant d'utiliser un pluriel s'il y a plusieurs implémentations (DataProviders.cs). Ou de numéroter les fichiers selon leur ordre logique d'utilisation (0.Initializers.cs, 1.Processes.cs, etc). Et réciproquement on peut nommer librement la classe sans se soucier de l'ordre de ce nom dans l'explorateur de solution.
Partager