Bonne définition de « cohérence » [fermé]
-
06-09-2019 - |
Question
Je suis en train de dire à quelqu'un son code dans le sens où il sert à plusieurs fins est pas « cohérente ». Je ne pense pas que je peux l'expliquer très bien, donc je suis à la recherche d'une bonne référence et / ou définition.
La solution
Je pense que le terme correct est cohésion .
Dans la programmation informatique, de cohésion est une mesure de la façon dont fortement liée et ciblée les diverses responsabilités d'un module logiciel sont. La cohésion est un type ordinal de mesure et est généralement exprimée sous la forme de « cohésion élevé » ou « faible cohésion » en cours de discussion.
Modules à forte cohésion ont tendance à être préférable, car une forte cohésion est associée à plusieurs caractéristiques souhaitables de logiciels, y compris la robustesse, la fiabilité, la réutilisabilité, et la compréhensibilité alors que la faible cohésion est associée à des caractéristiques indésirables comme être difficile à maintenir, difficile à tester, difficile à réutiliser, et même difficile à comprendre.
Autres conseils
J'avais code complet par Steve McConnell à côté de mon ordinateur (par exemple les programmeurs bible) avec la page ouverte expliquant la cohésion je pensais que je partage donc,
Cohésion est née de la conception structurée et est généralement discuté dans le même contexte en tant que couplage. cohésion fait référence à quel point toutes les routines dans un classe ou tout le code dans une routine soutenir un but-faire central axé la classe est. Les classes qui contiennent fortement les fonctionnalités associées sont décrit comme ayant une forte cohésion, et l'objectif est de faire heuristique cohésion aussi forte que possible.
J'utilise le terme « séparation des préoccupations » pour expliquer cela en refactoring. Souvent, lorsque le code est assez nouveau, les choses vont se regroupées en ensemble que les préoccupations distinctes ne sont pas claires au premier abord.
Une façon simple d'illustrer ceci à votre collègue de travail serait de leur demander d'écrire des cas de test pour le code. Cela devrait illustrer le fait que le code est clair ou cohérent.
Une autre bonne expression à utiliser est que les fonctions / objets « doivent faire une chose, et le faire bien », cela a des implications dans tout des noms objet / méthode à l'architecture globale du système.
En plus des réponses à ce jour, une façon simple de penser à une forte cohésion est le manque de duplication des fonctionnalités et des fonctionnalités claires seperation connexes en modules distincts, des composants ou des classes. Ainsi, si vous voulez une fonction similaire à une autre fonction, et vous couper et coller et modifier ensuite une copie du code, vous réduisez la cohésion. Si vous modifiez le l'original pour traiter le nouveau cas, où le nouveau cas est clairement liée à la fonctionnalité existante, vous augmentez la cohésion. Autrement dit, si votre programme doit faire une chose donnée, peu importe comment les temps ou dans combien d'endroits, pour la cohésion maximale, il ne devrait y avoir un seul morceau de code qui fait cette chose. En même temps, une classe donnée, module ou composant doit avoir une seule zone de responsabilité. Tasser fonctionnalité sans rapport en une seule classe ou d'un composant réduit également la cohésion.
Comme le dit CodeWiki, la cohésion est généralement discuté avec le couplage, où les deux peuvent agir en opposition les uns aux autres, en particulier lorsque des interfaces strictes ne sont pas soigneusement planifiées. Un grand nombre des articles Googled sur la cohésion se rapportent à la conception OO, mais la cohésion et le couplage ne sont pas limités à OO.
marquée par une relation ordonnée, logique et esthétique cohérente des parties; "Un argument cohérent" - de http://www.websters-online-dictionary.org / définition / cohérente