Question

Quel est le bon rapport entre le nombre de classes et les lignes de code d'un langage orienté objet (par exemple, C ++, C #, Java et leurs goûts)?

De nombreuses personnes, y compris les responsables, apprécient la métrique traditionnelle des lignes de code (LOC) pour mesurer la complexité des logiciels, tandis que de nombreux développeurs orientés objet cernés diront que la LOC n’a aucune valeur si elle compte. Et personnellement, j’estime que les classes sont peut-être une mesure de complexité plus raisonnable, mais qu’en l’absence d’une métrique LOC, il est difficile d’évaluer la complexité réelle de ces classes (quantité de poltergeists et de dieux).

Ainsi, est-ce que quelqu'un sait ce qui est susceptible d'être un bon ratio pour un logiciel assez bien codé?

Modifier: dans ce cas particulier, je recherche un ratio pour déterminer une estimation approximative du nombre de modifications nécessaires pour nettoyer le code.

Éditer: Quelqu'un connaît-il des ratios pour de gros projets OSS tels que Firefox, Apache, Webkit, etc ...?

Était-ce utile?

La solution

Les LOC ou les NLOC ne sont pas vraiment une bonne mesure de la qualité ou de la santé de votre code. Je vous recommande d'utiliser l'analyse de code statique de NDepend (pour vos potes .net) afin de vérifier l'efficacité de l'architecture de votre solution.

Je trouve que les LOC sont une bonne mesure uniquement au niveau de la méthode. C'est-à-dire que j'aime généralement que mes méthodes s'adaptent à l'écran (pas de petites polices). D'autres métriques telles que la complexité cyclomatique et la couverture de code (pour vous, les TDDers) en plus de vos tests unitaires peuvent donner une meilleure idée de la santé de votre base de code.

Autres conseils

Il n’ya pas vraiment de réponse satisfaisante, définitive ou satisfaisante à cette question. Cependant, je dirai que, selon mon expérience, les lignes de code par classe diminuent avec l’expérience acquise en programmation orientée objet.

La plupart des gens qui n’ont pas étudié les principes de conception orientée objet auront tendance à suivre des classes comportant de nombreuses lignes de code. Les personnes ayant beaucoup d'expérience orientée objet auront tendance à avoir moins de lignes de code par classe, mais auront beaucoup plus de classes. Et bien sûr, les deux se plaindront l'un de l'autre: -).

Si vous cherchez vraiment une règle empirique, je dirais que toute classe qui ne peut pas être imprimée sur une seule feuille de papier avec une résolution lisible est peut-être trop longue et doit être refactorisée. Votre cible peut alors être de l’ordre de 100 à 200 lignes mais, à mon avis, le facteur nombre de pages est un peu plus facile à gérer.

Je suis également fermement convaincu que le nombre de pages métriques devrait être considéré comme une mesure factorielle de la méchanceté plutôt que linéaire. S'il y a une classe de dix pages dans la base de code, cela donne au moins trois millions de fois pire que de la voir apparaître dans une petite classe bien architecturée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top