Code Contracts machen die Validierung leicht und sorgfältig

Code Contracts ermöglichen es, Validierungslogik in seine Methoden und Klassen einzubinden, ohne viele if/then-Anweisungen schreiben zu müssen. Außerdem bieten Code Contracts die Möglichkeit, diese Validierung sowohl während der Kompilierung als auch zur Laufzeit durchzuführen, was traditioneller Validierungscode nicht schafft.

Was macht Code Contracts so hilfreich für die Validierung? Bislang erforderte Validierungscode vom Entwickler das Schreiben einer großen Anzahl von if/then-Anweisungen. An sich stellt dies kein Problem dar, denn solche Anweisungen sind nicht schwer zu schreiben. Das Problem ist die dahinterstehende Logik, die auf den ersten Blick nicht sofort ersichtlich wird. Es ist schwierig, zwischen Validierungscode und dem eigentlichen Code zu unterscheiden.

Obwohl der Code nicht schwer ist, muss er geschrieben und mühsam gepflegt werden. Von daher wird er nur selten aktualisiert oder sogar ganz vergessen, wenn sich die Geschäftslogik ändert. Mit dem Validierungscode etwas anderes zu tun, als Exceptions (Ausnahmefehler) auszulösen, erfordert viel Arbeit. Daher begnügen sich die meisten Entwickler genau damit, und der Aufrufer registriert diese einfach oder protokolliert sie wie jede andere Fehlermeldung auch. Schließlich ist dieser Code für den Compiler nicht von anderem Code zu unterscheiden, was eine statische Analyse oder spezielle Unit-Tests eher unwahrscheinlich macht.

Zur Verdeutlichung stelle man sich eine Methode mit der folgenden Signatur vor:


Die Geschäftslogik zur Validierung dieser Methode ist, dass 0 5 ist, und Input3 den Wert 500 enthalten muss. Der folgende Beispielcode A zeigt die Validierung hierfür.

Beispielcode A


Das ist fürchterlich viel Code für eine so kleine Aufgabe.

Nun kommt noch eine weitere Bedingung hinzu: Der Rückgabewert dieser Funktion darf nicht negativ sein. Dies erfordert einen weiteren if/then-Block, der Exceptions auslöst (siehe Beispielcode B).

Beispielcode B


Es gibt einige Klassen, die feststellen können müssen, ob sie „gültig“ oder bereit sind. Häufig schreibt der Entwickler eine IsValid()-Methode, um die Validierung durchzuführen, und ruft diese am Ende jeder Methode auf, die den Status der Klasse ändert. Dies wird schnell zu einer lästigen Pflicht, und der Aufruf leicht vergessen.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

o1: OpenAI stellt neues KI-Modell für komplexe Abfragen vor

Das o1 genannte Modell liegt als Preview vor. Bei einer Mathematikprüfung beantwortet es 83 Prozent…

1 Tag ago

Zoom erhält IT-Sicherheits- kennzeichen des BSI

Das Kennzeichen erhalten Zoom Workplace Pro und Zoom Workplace Basic. Es bescheinigt unter anderem aktuelle…

2 Tagen ago

Google verbessert Tab-Verwaltung in Chrome

iOS und iPadOS erhalten Tab-Gruppen. Zudem unterstützt Chrome nun die Synchronisierung von Tab-Gruppen.

2 Tagen ago

Identitätsdiebstahl: 58 Prozent der Deutschen sorgen sich um digitales Erbe

Sie befürchten einen Missbrauch der Identitäten von Verstorbenen. 60 Prozent befürworten deswegen eine Klärung des…

2 Tagen ago

Bericht: Samsung plant massiven Stellenabbau

In einigen Unternehmensbereichen sind angeblich bis zu 30 Prozent der Beschäftigten betroffen. Samsung spricht in…

3 Tagen ago

Kritische Lücken in Adobe Reader und Acrobat

Sie erlauben eine Remotecodeausführung. Betroffen sind alle unterstützten Versionen von Adobe Reader und Acrobat für…

3 Tagen ago