Outils de traiter avec des programmes/code doivent être conservateur: depuis C# prend en charge plusieurs-à-plusieurs relations entre les fichiers et les classes/... vous ne pouvez pas simplement "assumer" un utilisateur ne va pas le faire parce qu'il/elle est a appris à ne pas le faire. Donc, ce n'est pas le signe d'encouragement. Vous avez à gérer les cas d'utilisateurs qui utilisent toutes les fonctionnalités disponibles dans la langue de votre offre. En outre, le compilateur lui-même n'a aucun problème avec plusieurs classes dans des fichiers, il est donc plus ce qui fait d'un programmeur/testeur/... plus efficace.
Il y a des avantages de la prise en charge de plusieurs classes par fichier et plusieurs fichiers par catégories:
-
Plusieurs classes par fichier:
compilateur de compilateurs par exemple parfois besoin (ou au moins rendre les choses plus simples, s'ils utilisent de multiples catégories. Dans de tels cas, il est agréable à émettre de tous à l'analyseur de code dans un seul fichier, parce qu'en général, un programmeur de ne jamais regarder dans le fichier. Surtout si le nombre de classes dépendent de certains paramètres d'entrée. Si l'on a jamais été inondé avec un programme générant des milliers de fichiers dans votre répertoire d'accueil (ou une autre répertoire), il/elle apprécie de garder le code généré dans un seul fichier;
en conserve exemples: un autre avantage d'au moins permettant à plusieurs classes par fichier est de permettre aux utilisateurs de faire des conserves exemples. Par exemple, si quelqu'un publie son code à un code de fragement sur StackOverflow; on peut exécuter immédiatement à travers un compilateur alors que pour le code Java, vous devez d'abord diviser les fragments dans des fichiers séparés.
Plusieurs fichiers par classe: GUI éditeurs parfois générer des code de l'INTERFACE utilisateur, mais il y a toujours un fichier qui doit gérer des événements. On peut bien sûr mettre dans le même fichier, mais cela rend les choses plus compliquées: qu'allez-vous faire avec le code d'utilisateur si vous avez à régénérer votre code de l'INTERFACE utilisateur?
Comme @RubberDuck dit, partial
est utile dans l'interaction entre un vrai programmeur et générateur de code, des outils pour prévenir le code de devenir un gâchis.
Enfin, il y a parfois des situations où la définition de plusieurs classes/interfaces/... dans un seul fichier n'est pas nécessairement une mauvaise pratique. delegate
s (ainsi que enum
s et comme @mg30rg dit - Exception
des classes), par exemple, sont conceptuellement sur le même niveau des classes, mais il peut en résulter de générer une énorme quantité de fichiers chaque avec une petite quantité de code. Cela peut faire un projet illisible ainsi.
Un parfois indiqué avantage de l'utilisation d'une classe par fichier approche est que quand vous mettez un fichier sous contrôle de version (git
, svn
, cvs
), vous pouvez facilement voir l'histoire d'une seule classe est passé.
En général, par le découplage des fichiers de classes, C# permet aux programmeurs de plus de liberté pour gérer leurs affaires comme ils pensent qu'il doit être le moyen le plus efficace. Bien que la norme est une classe par fichier (probablement hérité de Java qui a appliqué ce), il y a des situations où il peut être avantageux d'utiliser une autre forme de gestion.
Quelques commentaires ci-dessous montrent alternative raisons pour stocker plusieurs classes (ou des articles sur le même niveau conceptuel) dans un seul fichier et d'utiliser plusieurs fichiers qui contiennent des détails d'une seule classe,...