Entitäten kapseln Unternehmensweite Geschäftsregeln. Eine Entität kann ein Objekt mit Methoden oder ein Satz von Datenstrukturen und -funktionen sein. Es spielt keine Rolle, solange die Entitäten von vielen verschiedenen Anwendungen im Unternehmen verwendet werden könnten. Das Domänentestmuster, das ich in diesem Artikel beschrieben habe, ist nur eine Möglichkeit, einer Codebasis domänenorientierte Beobachtungsfähigkeit hinzuzufügen. Ich nähere hier kurz auf einige alternative Ansätze ein. DiscountInstrumentation ist ein Beispiel für ein Muster, das ich Domain Probe nenne. Ein Domänenteston stellt eine high-level instrumentation API vor, die sich an der Domänensemantik orientiert und die Low-Level-Instrumentierungsinstallationen kapselt, die erforderlich sind, um die domänenorientierte Beobachtbarkeit zu erreichen. Dies ermöglicht es uns, die Domänenlogik zu beobachten, während wir immer noch in der Sprache der Domäne sprechen, um die ablenkenden Details der Instrumentierungstechnologie zu vermeiden. In unserem vorherigen Beispiel implementierte unser ShoppingCart die Beobachtbarkeit, indem er Domain Observations meldete – Rabattcodes werden angewendet und Rabattcodesuche schlägt fehl – an den DiscountInstrumentation-Test, anstatt direkt in der technischen Domäne des Schreibens von Protokolleinträgen oder des Nachverfolgens von Analyseereignissen zu arbeiten. Dies mag eine subtile Unterscheidung erscheinen, aber die Beibehaltung des Domänencodes, der sich auf die Domäne konzentriert, zahlt sich in Bezug auf die Lesbarkeit, Verwaltbarkeit und Erweiterbarkeit einer Codebasis mit satten Dividenden aus. Die Techniken zum Anwenden der domänenorientierten Beobachtbarkeit, die wir bisher besprochen haben, können Low-Level-Instrumentationsaufrufe aus unserem Domänencode entfernen, aber wir haben immer noch eine gewisse Menge an Domänenbeobobbarkeitscode, der durch unsere Domänenlogik durchsetzt ist.

Es ist sauberer und einfacher zu lesen als direkte Aufrufe von Low-Level-Instrumentierungsbibliotheken, aber es ist immer noch da. Wenn wir das Beobobbarkeitsrauschen vollständig aus unserem Domänencode entfernen wollten, könnten wir uns vielleicht an die aspect-Oriented Programming (AOP) wenden. AOP ist ein Paradigma, das versucht, bereichsübergreifende Bedenken, wie z. B. Beobachtbarkeit, aus dem Hauptcodefluss zu extrahieren. Ein AOP-Framework ändert das Verhalten unseres Programms, indem Logik injiziert wird, die nicht direkt im Quellcode ausgedrückt wird. Wir steuern, wie dieses Verhalten über eine Art Meta-Programmierung injiziert wird, in der wir unseren Quellcode mit Metadaten kommentieren, die steuern, wo diese bereichsübergreifende Logik injiziert wird und wie sie sich verhält. Diese Anwendung von Rabatten auf einen Warenkorb ist ein Schlüsselmerkmal, daher ist eine gute Beobachtbarkeit hier wichtig. Lassen Sie uns einige Instrumente hinzufügen: Längsschnittstudien erfordern die Überprüfung der zeitlichen Konsistenz von Daten. Plots von seriellen Einzeldaten wie Wachstumsdaten oder wiederholte Messungen kategorialer Variablen zeigen oft ein erkennbares Muster, aus dem ein zwiespältiger Datenpunkt deutlich herausragt. In klinischen Studien kann es Bedenken hinsichtlich der Voreingenommenheit der Prüfer geben, die sich aus den genauen Dateninspektionen ergibt, die während der Reinigung stattfinden, so dass eine Untersuchung durch einen unabhängigen Sachverständigen erforderlich sein kann.

Gehen Sie von saubereren zu schmutzigeren Bereichen, um die Ausbreitung von Schmutz und Mikroorganismen zu vermeiden. Beispiele hierfür sind: Es gibt hier keinen richtigen oder falschen Ansatz – jedes Team drückt seine eigenen stilistischen Vorlieben in seiner Codebasis aus. Teams, die zu einem funktionaleren Stil tendieren, neigen möglicherweise zu Schichten teilweise angewendeter Domänensonden. Teams mit einem eher “Enterprise Java”-Stil bevorzugen möglicherweise einige große, allgemeine Domänentests, in denen die meisten Instrumentationskontexte als Parameter an diese Methoden übergeben werden. Beide Teams sollten jedoch die Ideen der Partizipierung verwenden, um Metadaten wie Anforderungsbezeichner von Domänentest-Clients zu verbergen, die sich sonst nicht um solche technischen Details kümmern würden. Abbildung 9. Beispiel für eine Reinigungsstrategie von saubereren zu schmutzigeren Bereichen Wir erwarten jedoch, dass Änderungen am Betrieb der Anwendung die Anwendungsfälle und damit die Software in dieser Schicht beeinflussen.