Question

Alors il y a beaucoup de bons exemples sur ce forum qui contiennent des exemples de couplage et de cohésion, je me bats pour l'appliquer à mon code entièrement. Je peux identifier les pièces dans mon code qui peuvent avoir besoin de changer. Est-ce que tous les experts Java de pouvoir jeter un oeil à mon code et me expliquer quels aspects sont bons et mauvais. Je ne me dérange pas de changer moi-même du tout. Il est juste que beaucoup de gens semblent être en désaccord les uns avec les autres et je trouve qu'il est difficile de comprendre réellement quels principes à suivre ...

Était-ce utile?

La solution

Je recommande le livre de Alan et James Design Patterns expliqué - Une nouvelle perspective sur la conception orientée objet (ISBN-13: 978-0321247148):

Couverture: Design Patterns expliqué - Une nouvelle perspective sur la conception orientée objet

Il est un grand livre sur a-un et est-a decissions, y compris la cohésion et le couplage dans la conception orientée objet.

Autres conseils

D'abord, je voudrais dire que la principale raison que vous obtenez ces réponses différentes est que cela ne devienne vraiment un art au fil du temps. La plupart des opinions que vous obtenez ne pas faire bouillir une règle dur rapide ou de fait, plus il se résume à l'expérience générale. Après 10-20 ans faisant cela, vous commencez à vous rappeler ce que les choses que vous avez fait qui a causé la douleur, et comment vous les faire à nouveau évité de. De nombreuses réponses travaillent pour certains problèmes, mais il est l'expérience d'une personne qui détermine leur opinion.

Il n'y a vraiment que 1 vraiment grand chose que je changerais dans votre code. Je considère la recherche dans ce qu'on appelle le modèle de commande. Informations sur cela ne devrait pas être difficile de trouver soit sur le web ou dans le livre GoF.

L'idée principale est que chacune de vos commandes « Ajouter un enfant », « ajouter parent » devenir une catégorie distincte. La logique d'une commande unique est enfermé dans une seule petite classe qui est facile à tester et modifier. Cette classe doit alors être « exécuté » pour faire le travail de votre classe principale. De cette façon, votre classe principale est que pour faire face à l'analyse de la ligne de commande, et peut perdre la plus grande partie de la connaissance d'un FamilyTree. Il doit juste savoir ce que la ligne de commande des cartes dans lequel les classes et les Ordonne coup d'envoi.

C'est mes 2 cents.

En bref:

Cohésion en génie logiciel, comme dans la vie, est de savoir combien les éléments comprenant un ensemble (dans notre cas disons une classe) peut dire qu'ils appartiennent effectivement ensemble. Ainsi, il est une mesure de la façon dont chaque élément fortement associé de fonctionnalités exprimées par le code source d'un module logiciel est.

Une façon de regarder la cohésion en termes de OO est si les méthodes de la classe utilisent l'un des attributs privés.

Maintenant, la discussion est plus grand que cela, mais de haute cohésion (ou meilleur type de la cohésion - la cohésion fonctionnelle). Est lorsque des parties d'un module sont regroupés car ils contribuent tous à une seule tâche bien définie du module

Le couplage avec des mots simples, est de savoir combien un composant (encore une fois, imaginez une classe, mais pas nécessairement) connaît sur le fonctionnement interne ou les éléments internes d'un autre, à savoir à quel point la connaissance qu'il a de l'autre composant.

couplage lâche est un procédé d'interconnexion des composants dans un système ou un réseau de sorte que ces composants dépendent les uns des autres au moins l'étendue pratiquement possible ...

En temps:

j'ai écrit un billet de blog à ce sujet. Il examine tout cela dans les détails, avec des exemples etc. Il explique également les avantages de la raison pour laquelle vous devez suivre ces principes. Je pense que cela pourrait aider ...

Le couplage définit le degré auquel chaque composant dépend d'autres composants du système. Compte tenu de deux composants A et B, ainsi que le code beaucoup en B doit changer en cas de changement. Cohésion définit la mesure de la façon cohérente ou fortement liés aux différentes fonctions d'un seul composant logiciel are.It fait référence à ce que la classe fait. faible cohésion signifierait que la classe ne une grande variété d'actions et ne se concentre pas sur ce qu'il doit faire. la cohésion élevée signifie alors que la classe se concentre sur ce qu'il devrait faire, à savoir que les méthodes relatives à l'intention de la classe. Remarque: Les bonnes API présentent un couplage lâche et une grande cohésion. Une forme particulièrement répugnant de couplage serré qui doit être évitée est toujours à deux composants qui dépendent les uns des autres, directement ou indirectement, soit un cycle de dépendance ou de dépendance circulaire. informations détaillées dans lien ci-dessous http://softwarematerial.blogspot.sg/2015/12/coupling-and -cohesion.html

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