Mit Code Contracts kann man all dieses mühselige Schreiben von Code auslassen und stattdessen etwas viel Einfacheres verwenden. Code Contracts definiert eine statische Klasse namens „Contract“, die zwei statische Methoden zur Validierung von Eingaben und Ausgaben mitbringt: Contract.Requires() und Contract.Ensures(). Beide sollten ganz am Anfang der Methode platziert werden, und beide erwarten konditionale Ausdrücke als Eingabeparameter.
Es gibt einige Einschränkungen, welche Methoden man innerhalb dieser Aufrufe verwenden darf, sowie einige spezielle Details hinsichtlich Schleifen und Collections. Das Code Contracts User Manual (das erstaunlich gut geschrieben ist, wenn man den Status dieses Projekts bedenkt) liefert hierzu alle Einzelheiten. Optional kann man an Contract.Requires() und Contract.Ensures() auch Text übergeben, der als Fehlermeldung verwendet wird.
Beispielcode C zeigt die gesamte Eingabe- und Ausgabevalidierung von Beispielcode A und Beispielcode B in Kombination.
Beispielcode C
Dieser Code ist wesentlich klarer und kompakter. Und er ist sofort als Validierungscode erkennbar.
Für das Problem, den Objektstatus zu validieren, ermöglicht Code Contracts das Erstellen einer Methode, der man das Attribut [ContractInvariantMethod] hinzufügt. Die Methode darf nur Aufrufe von Contract.Invariant() enthalten, die ebenfalls konditionale Ausdrücke zulässt. Sobald dies erledigt ist, wird der Code in der Methode verwendet, um das Objekt am Ende jedes Aufrufs einer seiner Methoden zu validieren.
Neueste Kommentare
Noch keine Kommentare zu Code Contracts machen die Validierung leicht und sorgfältig
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.