Frage

Während es in diesem Forum viele gute Beispiele gibt, die Beispiele für Kopplung und Zusammenhalt enthalten, kämpfe ich darum, ihn vollständig auf meinen Code anzuwenden. Ich kann Teile in meinem Code identifizieren, die möglicherweise geändert werden müssen. Würden alle Java -Experten einen Blick auf meinen Code werfen und mir erklären, welche Aspekte gut und schlecht sind? Es macht mir nichts aus, es selbst zu ändern. Es ist nur so, dass viele Menschen miteinander nicht einverstanden zu sein scheinen, und es fällt mir schwer, wirklich zu verstehen, welche Prinzipien folgen sollen ...

War es hilfreich?

Lösung

Ich kann Alan's und James 'Buch empfehlen Entwurfsmuster erklärt-eine neue Perspektive auf objektorientiertes Design (ISBN-13: 978-0321247148):

Cover: Design Patterns explained -- A new perspective on object-oriented design

Es ist ein tolles Buch über hat ein und ist ein Erschüsse, einschließlich Kohäsion und Kopplung im objektorientierten Design.

Andere Tipps

Erstens möchte ich sagen, dass der Hauptgrund, warum Sie so unterschiedliche Antworten erhalten, darin besteht, dass dies im Laufe der Zeit wirklich zu einer Kunst wird. Viele der Meinungen, die Sie erhalten, sind nicht auf eine harte schnelle Regel oder eine tatsächliche Tatsache heran, sondern auf allgemeine Erfahrung. Nach 10-20 Jahren erinnern Sie sich daran, welche Dinge Sie getan haben und wie Sie es vermieden haben, sie wieder zu tun. Viele Antworten arbeiten für einige Probleme, aber es ist die Erfahrung des Einzelnen, die ihre Meinung bestimmt.

Es gibt wirklich nur eine wirklich große Sache, die ich in Ihrem Code ändern würde. Ich würde in Betracht ziehen, was das Befehlsmuster genannt wird. Informationen dazu sollten weder im Web noch im GOF -Buch zu finden sein.

Die Hauptidee ist, dass jedes Ihrer Befehle "Kind hinzufügen", "Eltern hinzufügen" zu einer separaten Klasse. Die Logik für einen einzelnen Befehl ist in einer einzigen kleinen Klasse eingeschlossen, die leicht zu testen und zu ändern ist. Diese Klasse sollte dann "ausgeführt" werden, um die Arbeit aus Ihrer Hauptklasse aus zu erledigen. Auf diese Weise muss sich Ihre Hauptklasse nur mit der Parsen des Befehlszeilens befassen und kann das meiste Wissen über einen FamilyTree verlieren. Es muss nur wissen, welche Befehlszeilen, in die Befehlskassen erstellt und sie starten.

Das sind meine 2 Cent.

Zusamenfassend:

Der Zusammenhalt in der Software -Engineering ist wie im wirklichen Leben, wie viel die Elemente, die ein Ganzes bestehen (in unserem Fall, sagen wir eine Klasse), dass sie tatsächlich zusammengehören. Daher ist es ein Maß dafür, wie stark jedes Stück Funktionalität mit dem Quellcode eines Softwaremoduls miteinander verbunden ist.

Eine Möglichkeit, den Zusammenhalt in Bezug auf OO zu betrachten, ist, wenn die Methoden in der Klasse eines der privaten Attribute verwenden.

Jetzt ist die Diskussion größer als dieser, aber der hohe Zusammenhalt (oder der beste Typ des Kohäsion - der funktionale Zusammenhalt), wenn Teile eines Moduls gruppiert werden, weil sie alle zu einer einzigen genau definierten Aufgabe des Moduls beitragen.

Die Kopplung in einfachen Worten ist, wie viel eine Komponente (erneut eine Klasse vorstellen, obwohl nicht unbedingt) über die inneren Arbeiten oder die inneren Elemente eines anderen weiß, dh, wie viel Wissen es über die andere Komponente hat.

Lose Kopplung ist eine Methode zur Verbindung der Komponenten in einem System oder Netzwerk, damit diese Komponenten praktisch möglich voneinander abhängen.

In lange:

Ich habe einen Blog -Beitrag darüber geschrieben. Es wird all dies detailliert mit Beispielen usw. erläutert. Es erklärt auch die Vorteile, warum Sie diese Prinzipien befolgen sollten. Ich denke, es könnte helfen ...

Die Kopplung definiert den Grad, in dem jede Komponente von anderen Komponenten im System abhängt. Bei zwei Komponenten A und B, wie viel Code in B sich ändern muss, wenn sich A ändert. Kohäsion definiert das Maß dafür, wie kohärent oder stark die verschiedenen Funktionen einer einzelnen Softwarekomponente miteinander verbunden sind. Es bezieht sich auf das, was die Klasse tut. Niedriger Zusammenhalt würde bedeuten, dass die Klasse eine Vielzahl von Aktionen ausführt und sich nicht auf das konzentriert, was sie tun sollte. Ein hoher Zusammenhalt würde dann bedeuten, dass sich die Klasse auf das konzentriert, was sie tun sollte, dh nur Methoden, die sich auf die Absicht der Klasse beziehen. HINWEIS: Gute APIs zeigen eine lose Kopplung und einen hohen Zusammenhalt. Eine besonders abscheuliche Form einer engen Kopplung, die immer vermieden werden sollte, ist zwei Komponenten, die direkt oder indirekt voneinander abhängen, dh ein Abhängigkeitszyklus oder eine kreisförmige Abhängigkeit. Detaillierte Informationen im folgenden Linkhttp://softwarematerial.blogspot.sg/2015/12/coupling-and-cohesion.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top