Was Sie geschrieben haben, sind Vorbedingungen und ein wesentliches Element der Vertragsmäßiges Design . Googeln Sie (oder "StackOverflow":) nach diesem Begriff und Sie werden eine Menge guter Informationen darüber finden, aber auch einige schlechte. Beachten Sie, dass die Methode auch Folgendes umfasst Nachkonditionen und das Konzept der Klasseninvariante .
Wir sollten uns darüber im Klaren sein, dass Behauptungen ein gültiger Mechanismus sind.
Natürlich sind sie normalerweise ( nicht immer ) pas im Freigabemodus aktiviert ist. Das bedeutet, dass Sie Ihren Code vor der Freigabe testen müssen.
Wenn Assertions aktiviert bleiben und eine Assertion verletzt wird, besteht das Standardverhalten in einigen Sprachen, die Assertions verwenden (und insbesondere in Eiffel) darin, eine Assertion Violation Exception zu werfen.
Ungeprüfte Behauptungen sind pas ein bequemer oder ratsamer Mechanismus, wenn Sie eine Code-Bibliothek veröffentlichen, noch (natürlich) eine Möglichkeit, direkte, möglicherweise falsche Eingaben zu überprüfen. Wenn Sie "möglicherweise falsche Eingaben" haben, müssen Sie als Teil des normalen Verhaltens Ihres Programms eine Eingabeüberprüfung vorsehen Ebene ; aber Sie können trotzdem Assertions in den internen Modulen frei verwenden.
Andere Sprachen, wie Java, haben eher eine Tradition der explizite Überprüfung der Argumente und Auslösen von Ausnahmen, wenn sie falsch sind hauptsächlich deshalb, weil diese Sprachen keine starke "assert"- oder "design by contract"-Tradition haben.
(Es mag manchen seltsam erscheinen, aber ich finde die Unterschiede in der Tradition respektabel und nicht unbedingt schlecht).
Siehe auch diese verwandte Frage .