100 votes

Est-ce une mauvaise pratique d'avoir plusieurs classes dans le même fichier?

J'avais l'habitude d'avoir une classe pour un fichier. Par exemple, car.cs a la voiture de classe. Mais comme je programme plus de classes, je voudrais les ajouter au même fichier. Par exemple, car.cs a la classe voiture et la classe porte , etc.

Ma question est bonne pour Java, C #, PHP ou tout autre langage. Devrais-je essayer de ne pas avoir plusieurs classes dans le même fichier ou est-ce correct?

119voto

Patrick Desjardins Points 51478

Je pense que vous devriez essayer de garder votre code à la 1 classe par fichier.

Je propose cela car il sera plus facile de trouver votre classe plus tard. Aussi, il vaut mieux travailler avec votre système de contrôle de source (si un fichier est modifié, alors vous savez que l'un particulier de la classe a changé).

La seule fois où je pense que c'est correct d'utiliser plus d'une classe par fichier est lorsque vous utilisez les classes internes... mais les classes internes sont à l'intérieur d'une autre classe, et peut donc être laissé dans le même fichier. Les classes internes rôles sont fortement liés à l'extérieur des classes, afin de les placer dans le même fichier est bien.

30voto

S.Lott Points 207588

En Java, une classe publique par fichier est la façon dont le langage fonctionne. Un groupe de fichiers Java peut être rassemblé dans un paquet.

En Python, toutefois, les fichiers sont des "modules" et comportent généralement un certain nombre de classes étroitement liées. Un package Python est un répertoire, tout comme un package Java.

Cela donne à Python un niveau supplémentaire de regroupement entre classe et package.

Il n'y a pas une seule bonne réponse qui soit indépendante de la langue. Cela varie avec la langue.

29voto

Kyralessa Points 76456

Une classe par fichier est une bonne règle, mais qu'il est approprié de faire quelques exceptions. Par exemple, si je travaille dans un projet où la plupart des classes sont associés à des types de collection, souvent je vais garder la classe et de sa collection dans le même fichier, par exemple:

public class Customer { /* whatever */ }

public class CustomerCollection : List<Customer> { /* whatever */ }

La meilleure règle est de garder une classe par fichier, sauf quand ça commence à rendre les choses plus difficiles plutôt que facile. Depuis Visual Studio Rechercher dans les Fichiers est tellement efficace, que vous avez probablement n'avez pas à passer beaucoup de temps à la recherche par le biais de la structure de fichiers de toute façon.

27voto

James Points 7234

Non, je ne pense pas que c'est une mauvaise pratique. Ce que je veux dire par là c'est qu'en général, il est préférable d'avoir un fichier séparé par classe, mais il y a certainement de bonnes exception des cas où il est préférable d'avoir un tas de classes dans un seul fichier. Un bon exemple de ceci est un groupe de classes d'Exception, si vous avez quelques dizaines de ces pour un groupe donné est-il vraiment justifié de séparer un fichier distinct pour chaque deux paquebot de la classe? Je dirais pas. Dans ce cas, avoir un groupe d'exceptions dans une classe est beaucoup moins encombrant et simple à mon humble avis.

14voto

Daniel Schaffer Points 14707

J'ai constaté que chaque fois que j'essaie de combiner plusieurs types dans un seul fichier, je finis toujours par les séparer en arrière simplement parce que cela les rend plus faciles à trouver. À chaque fois que je combine, il y a toujours un moment où j'essaie de comprendre le type où j'ai défini le type x.

Donc maintenant, ma règle personnelle est que chaque type individuel (sauf peut-être pour les classes enfants, par lequel une classe dans une classe, pas une classe héritée) obtient son propre fichier.

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