Soll ich mit Kopplung zwischen Paketen oder zwischen den Einheiten der Verteilung mehr betroffen sein?

StackOverflow https://stackoverflow.com/questions/123687

  •  02-07-2019
  •  | 
  •  

Frage

Ich habe auf Metriken Suche Kupplung und auch Blick auf DSM .

Eines der Werkzeuge, die ich habe Blicke auf Kopplung zwischen ‚Module‘ mit einem Modul eine Einheit der Verteilung zu sein (in diesem Fall eine .NET-Assembly) verwendet wird.

Ich glaube, dass ich bei der Betrachtung Kopplung zwischen Paketen mehr daran interessiert sein soll (oder Namespaces) als mit Einheiten der Verteilung.

Soll ich mit Kopplung zwischen packages / Namensräume mehr betroffen sein (sicherzustellen, dass Abstraktionen nur auf Abstraktionen abhängen, hängen konkreten Typen auf Abstraktionen und ihre sind keine Zyklen in den Abhängigkeiten, so dass Refactoring und sich leicht) oder sollte ich darum kümmern, ob ich neue Versionen, ohne bereitstellen kann unverändert Einheiten der Verteilung zu aktualisieren?

Was macht jemand anders messen?

Für das, was es wert ist, mein Bauchgefühl ist, dass, wenn ich auf das Paket / Namensraum Kopplung fokussieren dann die Einheit der Verteilung Kopplung kostenlos kommen oder zumindest einfacher sein.

War es hilfreich?

Lösung

Als erstes ist es einfach, über Bord zu gehen, um Abhängigkeiten und Kopplung suchen. Stellen Sie sicher, dass Sie nicht über erschweren es.

Mit diesem Haftungsausschluss ist aus dem Weg, hier ist was ich vorschlagen.

Es gibt wirklich drei verschiedene Ansichten zur Abhängigkeit / Kopplungs-Management: 1) Physikalische Struktur (d.h. Montage Abhängigkeiten) 2) logische Struktur (d.h. Namensraum-Abhängigkeiten) 3) Durchführungsstruktur (d.h. Klasse Abhängigkeiten)

Für große Anwendungen, müssen Sie mindestens alle 3 untersuchen, aber Sie können in der Regel priorisieren.

Für Client bereitgestellt Apps, die Nummer 1 kann sehr wichtig sein (das heißt für Dinge wie Plug-In). Für Anwendungen innerhalb des Unternehmens eingesetzt (das heißt asp.net), Artikel # 1 dreht sich in der Regel aus, um nicht so wichtig (mit Ausnahme von Frameworks für mehrere Anwendungen wiederverwendet). Sie können in der Regel die gesamte App einfach genug bereitstellen nicht für # 1 den Aufwand einer komplizierten Struktur zu nehmen.

Artikel # 2 dazu neigt, eher ein Wartbarkeit Thema. Kennen Sie Ihre Schichtgrenzen und ihre Beziehung zu Namespaces (das heißt Sie pro Namensraum 1 Schicht tun, oder Sie anders auf der logischen Ebene verpackt). Manchmal kann Werkzeuge helfen Ihnen, indem man die logische Abhängigkeitsstruktur Ihre Schichtgrenzen zu erzwingen.

Artikel # 3 ist wirklich gut Klasse-Design zu tun. Jeder guter Entwickler eine ziemlich gute Menge an Aufwand treiben sollte in sicherzustellen er nur in seinen Klassen auf den richtigen Abhängigkeiten nehmen. Das ist leichter gesagt als getan, und ist in der Regel eine Fähigkeit, die erworbenen im Laufe der Zeit werden muss.

Um ein bisschen näher an das Herz Ihrer Frage zu erhalten, Artikel # 1 ist wirklich darüber, wie die Projekte in der VS-Lösung gelegt. Das ist also nicht ein Element zu messen. Es ist eher etwas, das Sie Setup am Anfang und laufen lassen. Artikel # 2 ist etwas, das Sie ein Tool verwenden könnte während prüfen baut, um zu sehen, ob die Entwickler alle Regeln gebrochen haben. Es ist eher ein Scheck als eine Maßnahme wirklich. Artikel # 3 ist wirklich diejenige, die Sie einen guten Blick auf Mess nehmen wollen würde. Das Finden der Klassen in Ihrer Code-Basis, die eine hohe Menge an Kupplungs haben werden Schmerzpunkte auf dem Weg sein, um die Qualität auf den Jungen. Auch auf dieser Ebene Messung ermöglicht Ihnen einen Einblick in die Qualität (insgesamt) der Code-Basis zu haben, wie es sich entwickelt hat. Darüber hinaus kann es geben Sie eine rote Fahne, wenn jemand etwas wirklich schlüpfrig Code in Ihre Code-Basis überprüft.

Wenn Sie also priorisieren wollen, werfen Sie einen kurzen Blick auf # 1 und # 2. Wissen, wie sie aussehen sollten. Aber für die meisten Anwendungen, Artikel # 3 sollte die meiste Zeit nehmen.

Diese Antwort lautet natürlich, schließt großen Frameworks (wie .NET BCL). Diese Babys müssen sehr sorgfältig auf # 1. : -)

Ansonsten am Ende mit Problemen wie auf dem Punkt: „Aktuelle Versionen des .NET Framework umfassen eine Vielzahl von GUI-basierten Bibliotheken, was nicht richtig in Server Core funktionieren würde“ http://www.winsupersite.com/showcase/win2008_ntk.asp

Wenn Sie nicht .NET auf einem laufen GUI-less Installation von Windows Server 2008, da die Framework Abhängigkeiten von den GUI-Bibliotheken nimmt ...

Eine letzte Sache. Stellen Sie sicher, dass Sie mit den Prinzipien, die hinter gutem Abhängigkeit / Kopplungs-Management vertraut sind. Sie können eine schöne Liste finden Sie hier:

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

Andere Tipps

Kopplung und Abhängigkeitszyklen zwischen den Einheiten der Verteilung ist mehr „fatal“, weil es es wirklich schwierig, das Programm zu implementieren machen kann -. Und manchmal kann es auch es wirklich schwierig machen, sogar Ihr Programm zu kompilieren

Sie sind meist recht, ein gutes Top-Level-Design, das den Code in logische Pakete und klar und vordefinierte Abhängigkeiten nur Sie erhält die meisten des Weges teilt, fehlt das einzige, was richtig ist die Trennung der Pakete in Einheiten von Verteilungen.

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