2013-03-07 8 views

Antwort

17

Nach wikipedia:

Afferent Kupplungen (Ca): Die Anzahl der Klassen in anderen Paketen, die in dem Paket auf Klassen abhängen ist ein Indikator für die Verantwortung des Pakets. Afferent = ankommend.

Efferent-Kopplungen (Ce): Die Anzahl der Klassen in anderen Paketen, von denen die Klassen im Paket abhängen, ist ein Indikator für die Abhängigkeit des Pakets von externen Effekten. Efferent = ausgehend.

Also, wenn Sie Klassen (oder Pakete oder was auch immer) mit der folgenden Struktur:

class Foo { 
    Quux q; 
} 

class Bar { 
    Quux q; 
} 

class Quux { 
    // ... 
} 

Dann Foo und Bar jeweils eine ableitenden Kupplung und Quux hat zwei zuführenden Kupplungen .

+0

ist die Afferent-Kopplung ein besserer Indikator für das Prinzip der Einzelverantwortung, das geübt wird? – user20358

+0

@ user20358 - Ich bin nicht der beste Architekt, aber ich denke nicht, dass es viel anzeigt. Eine Klasse mit zu vielen afferenten Kopplungen könnte viel verwendet werden, weil sie zu viel macht. Oder es könnte nur eine Art von Crosscutting-Problem behandeln - Logging, ORM-Einheit der Arbeit, solche Dinge. – millimoose

9

Da Sie Sonar erwähnt, hier ist die bereitgestellte Definition von their documentation page

  • Afferent Kupplungen: A-Klasse zuführenden Kupplungen ist ein Maß dafür, wie viele andere Klassen der spezifischen Klasse.
  • Efferent Kupplungen: Eine Klasse efferent Kupplungen ist ein Maß dafür, wie viele verschiedene Klassen von der spezifischen Klasse verwendet werden.
+1

würde objektzusammensetzung bedeuten efferent kopplung dann? – user20358

0

Kopplung ist ein Maß für Abhängigkeiten.

Afferent Kupplung:

  • Wer von Ihnen abhängt.
  • Maß für wie viele andere Pakete ein bestimmtes Paket verwenden.
  • Eingehende Abhängigkeiten.

Efferente Kupplung:

  • Wer hängen Sie auf.
  • Maß, wie viele verschiedene Pakete von einem bestimmten Paket verwendet werden.
  • Ausgehende Abhängigkeiten.