====== assert / Contracts ====== Entsprechend wie bei Java überlegen, dass assert einem if entspricht, was ggfs. ein "fail" auslöst. [[https://dbs.cs.uni-duesseldorf.de/lehre/docs/java/javabuch/html/k100044.html]] func( par is int ptr ) { assert par != nullptr || [fail] ArgumentIsNull; // fail kann weggelassen werden // assert par != nullptr || throw ArgumentIsNullException; ... return; } ===== Nebeneffekte ===== Normalerweise sollten die Ausdrücke in Assertions keine Nebeneffekte enthalten. Also keinen Code, der Variablen verändert oder den Status des Programmes auf andere Weise modifiziert. Der Grund dafür ist, daß diese Nebeneffekte bei abgeschalteten Assertions natürlich nicht ausgeführt werden. Das Programm würde sich also anders verhalten, als wenn die Assertions angeschaltet wären. Dadurch können sehr schwer zu findende Fehler entstehen. Generell gilt, daß die Funktionalität des Programms nicht davon abhängen sollte, ob die Assertions an- oder abgeschaltet sind. ====== ====== Es sollte eine einheitliche Syntax mit fix geben, so dass auch assert sich Testfallbezogen zu- und abschalten lassen kann. siehe auch [[fix]]