Es gibt Tage, da hinterfrage ich meine Sicht der Dinge. Denn manchmal habe ich das Gefühl, dass ich der einzige bin, bei dem es in den Gehirnwindungen knarzt, wenn er sowas sieht:
switch( CanLink(val,id,type) )
{
case TRUE : Message("CanLink() == TRUE" ); break;
case FALSE : Message("CanLink() == FALSE"); break;
default : RvalOut( rVal, "AUTCanLink" ); break;
}
Natürlich weiss ich das TRUE unter Windows definitionsgemäß gleich 1 und FALSE gleich 0 ist. Was sogar in diesem Fall bedeuten könnte, das er tatsächlich manchmal in den default Block verzweigt. Doch erstens frage ich mich, ob eine Methode die “CanLink” heißst nicht wirklich nur true oder false zurückgeben sollte und zweitens wo die Logik bleibt, wenn wir bei bei einem binären Wahrheitswert eine dritte Möglichkeit abfragen.
Für ein solches Konstrukt gibt es in unserer Welt keine Entsprechung. Wenn wir eine Münze werfen und vorher auf Kopf oder Zahl setzen, diese Münze dann mit der Hand fangen und auf den Handrücken knallen, kommt kein Mensch auf die Idee vorher auszumachen, was passiert, wenn die Münze auf dem Rand landet.
Ein weiteres Beispiel wäre, dass ich jedesmal bevor ich jemanden frage: “Möchtest Du einen Kaffee?” erstmal Tee koche.
Was mir nicht klar ist, das Programme oft so undurchsichtig und krumm sind. Sie liefern oft eine Lösung von hinten durch die Brust ins Auge. Niemand würde nach “Feierabend” so verschroben denken. Warum aber während der Programmierung?
Da fällt mir einer dieser Programmierwitze ein, den eigentlich jeder Programmierer kennt und darüber lacht oder wenigstens schmunzelt. Er geht so:
bool Hoelle = true;
bool Zugefroren = false;
if( Hoelle == Zugefroren )
{
printf("Diese Applikation laeuft stabil!");
}
Für die Unkundigen: Hoelle und Zugefroren sind Wahrheitswerte und können nur wahr (true) oder falsch (false) sein. Dieses kleine Programm sagt nur aus, das die Software erst stabil läuft, wenn die Hölle zugefroren ist. Durch die Vorbelegung ist aber Hoelle==Zugefroren immer falsch und demnach wird diese Software niemals stabil laufen. Auch ich habe im ersten Moment geschmunzelt, weil es der täglichen Erfahrung ziemlich nahe kommt. Doch auch wenn die Aussage wahr ist, der Weg ist unschön. Der Wahrheitswert von Zugefroren ist völlig korrekt. Es beschreibt einen Zustand. Entweder ist etwas zugefroren oder nicht. Aber was will mir Hoelle=true sagen? Die Hölle ist kein Zustand der wahr oder falsch sein kann. Was würde mir Auto=false oder Wasser=true andeuten wollen? Auch hier sieht man wieder, der Teufel steckt nicht in der Hölle, sondern immer im Detail.