Alternative für nicht prüfbare
korrekte API-Benutzung
unveränderliche Werte benutzen mit jeweils
eigenen Typ für jeden Programmzustand und
auf Schleifen verzichten (Rekursion verwenden)
final PortNew portNew = new ...
final PortInitialized portInitialized;
if ( ... ) {
// richtig
portInitialized = portNew.initialize();
}
else {
// falsch und nicht kompilierbar
...
}
portInitialized.getXyz();
(man wird durch Schmerz (Bugfixing)
in die funktionale Richtung geschoben)
oder sichere Operationen
(Tic Tac Toe Beispiel)