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.
Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…
Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.
Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…
Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.
Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.
Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…