Kopplung, Kohäsion und das Gesetz von Demeter

Den Gesetz von Demeter zeigt an, dass Sie sollten sprechen Sie nur zu Objekten, die Sie wissen über direkt. Das heißt, führen Sie nicht die Verkettung von Methoden zu sprechen, um andere Objekte. Wenn Sie dies tun, werden Sie zur Gründung unsachgemäße verbindungen mit der Vermittler-Objekte, unpassend Kupplung Ihren code anderen code.

Ist das schlecht.

Die Lösung wäre für die Klasse, die Sie kennen, im wesentlichen setzen einfache Wrapper, übertragen Sie die Verantwortung für das Objekt, es hat die Beziehung mit.

Gut.

Aber scheint das Ergebnis in der Klasse mit niedrigen zusammenhalt. Es ist nicht mehr einfach verantwortlich für genau das, was es tut, aber es hat auch die Delegierten, die in einem gewissen Sinne, was den code weniger zusammenhalt durch das duplizieren von teilen der Schnittstelle der zugehörigen Objekt.

Ist das schlecht.

Ist es wirklich Ergebnis-Senkung der zusammenhalt? Ist es das kleinere von zwei übeln?

Ist das eine dieser Grauzonen der Entwicklung, wo Sie debattieren können, wo die Linie ist, oder sind es starke, grundsätzliche Möglichkeiten der Herstellung einer Entscheidung, wo die Grenze zu ziehen und welche Kriterien Sie verwenden können, um diese Entscheidung zu treffen?

  • Zwar ein wenig off-topic, würde ich dringend empfehlen, Ted Faisons "Event-based programming: taking events to the limit" link. Es gibt eine große Panne auf der gemeinsamen Kupplung Probleme und gibt ein gutes system, um die Messung der Höhe der Kupplung in einem bestimmten system
  • Bei Verstößen gegen die LoD, ob die zusätzlichen verbindungen sind "falsche" hängt von der Art der verknüpften Klassen: Wenn diese sehr prominent (denke, Zeile, Spalte, Zelle in der Umsetzung von Excel), die Kupplung zu Ihnen ist unproblematisch und der LoD ist sehr restriktiv. Ebenso, wenn die Klassen in Frage gezielt reinen Daten-Klassen mit im wesentlichen kein Verhalten.
Schreibe einen Kommentar