Question

Je viens de commencer à travailler pour une grande entreprise. dans une récente vérification interne, les mesures de mesure tels que Cyclomatic complexité et des tailles de fichier il est apparu que plusieurs modules dont celui appartenant à mon équipe ont une forte très index. si la semaine dernière, nous avons tous concentrés sur la réduction de ces indices pour notre code. en supprimant les points de décision et les fichiers déchirants.

peut-être je manque quelque chose d'être le nouveau type mais, comment cela améliorera notre logiciel? , je sais que les paramètres du logiciel peuvent mesurer la qualité de votre code est, mais la dose, il fonctionne dans l'autre sens environ? sera notre code deviendra mieux juste parce que par exemple, nous faisons un fichier 10000 lignes en 4 2500 fichiers lignes?

Était-ce utile?

La solution

Le but de mesures est d'avoir plus de contrôle sur votre projet. Ils ne sont pas un but en soi, mais peut contribuer à améliorer la qualité globale et / ou de repérer les inconséquences de conception. complexité cyclomatique est juste l'un d'eux.

couverture de test est un autre. Cependant, il est bien connu que vous pouvez obtenir une couverture de test et ont toujours une suite de tests pauvres, ou le contraire, une grande suite de tests qui se concentrent sur une partie du code. La même chose se produit pour la complexité cyclomatique. Tenir compte du contexte de chaque mesures, et s'il y a quelque chose à améliorer.

Vous devriez essayer d'éviter complexité accidentelle , mais si le traitement a complexité essentielle , votre code sera de toute façon plus compliquée. Essayez alors d'écrire du code mainteanble avec un juste équilibre entre le nombre de méthodes et de leur taille.

Un grand livre à regarder est « Object- mesures orientées dans la pratique ».

Autres conseils

Cela dépend comment vous définissez « mieux ». Les fichiers plus petits et moins de complexité cyclomatique rend généralement plus facile à entretenir. Bien sûr, le code lui-même pourrait encore se tromper, et les tests unitaires et d'autres méthodes d'essai va aider. Il est juste une partie de rendre le code plus maintenable.

Le code est plus facile à comprendre et à gérer en petits morceaux.

Il est une bonne idée de regrouper les bits liés de code dans leurs propres domaines fonctionnels pour améliorer la lisibilité et la cohésion.

Avoir un programme grand ensemble tout en un seul fichier rendra votre projet très difficile à déboguer, étendre et maintenir. Je pense que cela est tout à fait évident.

La métrique particulière est vraiment seulement une règle générale et ne doit pas être suivi religieusement, mais il peut indiquer quelque chose est pas aussi beau que cela pourrait être.

Que l'héritage du code de travail devrait être touché et refactorisé est quelque chose qui doit être évalué. Si vous décidez de le faire, vous devriez envisager d'écrire des tests pour elle premier , de cette façon, vous saurez rapidement si vos changements ont éclaté tout comportement requis.

Ne jamais ouvrir l'un de vos projets après plusieurs mois encore? Les composants individuels plus grands et plus complexes sont plus on se demande, ce genious a écrit ce code et pourquoi diable il l'a écrit de cette façon. Et, il n'y a jamais trop ou même une documentation suffisante. Donc, si les composants sont themself moins complexes et plus petits, il est plus facile de re-comprendre « em

est un peu Subjective. L'idée d'attribuer un indice Maximim de la complexité cyclomatique est d'améliorer la maintenabilité et la lisibilité du code.

À titre d'exemple dans la perspective du test unitaire, il est vraiment pratique d'avoir plus petites « unités ». Et en évitant les codes longs aidera le lecteur à comprendre le code. Vous ne pouvez pas vous assurer que le développeur original fonctionne sur le code pour toujours ainsi dans la perspective de l'entreprise, il est juste d'attribuer un tel critère de garder le code « simple »

  

Il est facile d'écrire un code qui peut undertand par un ordinateur. Il est plus difficile d'écrire un code qui peut comprendre par un être humain.

  

comment cela améliorera notre logiciel?

Extrait des articles lutte contre la complexité Fabricated en rapport avec l'outil pour les développeurs .NET NDepend . NDepend est bonne à aider l'équipe à gérer la base de code vaste et complexe. L'idée est que les mesures de code sont bonnes réduisons la complexité fabriqués dans la mise en œuvre du code:


Au cours de mon entretien sur le code Metrics par Scott Hanselman de logiciel sur les paramètres, Scott avait une remarque particulièrement pertinente.

En fait, alors que j'expliquais que les méthodes longues et complexes sont en train de tuer la qualité et devraient être divisés en méthodes plus petites, Scott m'a demandé:

  

regardant ce grand trop compliqué   méthode et je diviser en plus petits   méthodes, la complexité du   problème commercial est toujours là,   regardant ma demande je peux dire,   ce n'est plus complexe de la   point de vue de la méthode, mais le logiciel   lui-même, la façon dont il est couplé avec   les autres bits du code, peut indiquer d'autres   problème ...

complexité du logiciel est une mesure subjective par rapport à la capacité de la cognition humaine. Quelque chose est complexe quand il exige un effort d'être compris par un être humain. Le fait est que la complexité des logiciels est une mesure 2 dimensions. Pour comprendre un morceau de code, il faut comprendre à la fois:

  • ce que ce morceau de code est censé faire à l'exécution, le comportement du code, c'est la complexité du problème commercial
  • comment la mise en œuvre réelle n'atteint le problème commercial, quel était l'état mental de développeur alors qu'elle a écrit le code, c'est la complexité de mise en œuvre.

complexité du problème de l'entreprise est dans la description du programme et de réduire cela signifie travailler sur le comportement du code lui-même. D'autre part, nous parlons de complexité fabriqué en ce qui concerne la complexité de la mise en œuvre : il est fabriqué dans le sens où elle peut être réduite sans altérer le comportement du code.

  

comment cela améliorera notre logiciel?

Il peut être un déclencheur pour un refactoring, mais après une métrique ne garantit pas que tous les autres paramètres de qualité restent les mêmes. Et les outils ne sont en mesure de suivre les mesures très peu. Vous ne pouvez pas mesurer à quel code degré est compréhensible.

  

Est-ce que notre code se mieux juste   parce que par exemple, nous faisons une   10 000 lignes fichier en 4 lignes 2500   fichiers?

Pas nécessairement. Parfois, le plus grand peut être plus compréhensible, mieux structuré et ont moins de bugs.

La plupart des modèles de conception par exemple « améliorer » votre code en le rendant plus général et maintenable, mais souvent avec le coût des lignes source.

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