Es gibt große Firmen, bei denen etwas nur perfekt ist, wenn möglich viel Funktionalität in die Software gekloppft wird. Dies artet auch schonmal in diversen Allmachts- und Weltherschaftsgedanken aus. Ich bin jedoch der Ansicht, etwas ist erst dann perfekt wenn man bei gleichbleibener Funktion nichts mehr weglassen kann. Einige Kollegen meiner Zunft sehen dies ähnlich und bemühen sich die Code-Massen in Zaun und übersichtlich zu halten. Aus diesem Grund enstehen z.B. in diversen Programmiersprachen neue Schlüsselwörter. Eines dieser Schlüsselwörter ist in der Sprache Perl entstanden: unless
Die Funktionsweise ist schnell erklärt: unless ist eine negierte if Abfrage. Sie ist aus der Idee enstanden, das Fehlerbehandlungen in der Regel durchgeführt werden, wenn eine Aktion fehlgeschlagen ist. Mit einer if Abfrage muss dann im Normalfall die Fehlerabfrage erneut negiert werden um in den entsprechenden Anweisungsblock zu verzweigen.
Beispiel:
if( ! FileExist(”test.txt”) )
{
// Fehlerbehandlung
}
Mit Hilfe des unless Schlüsselwortes, kann dies noch ein quäntchen Schöner formuliert werden:
unless( FileExist(”Test.txt”) )
{
// Fehlerbehandlung
}
Bei dieser Formulierung kann nun nichts mehr weggelassen werden und ist somit in meinen Augen “perfekt”.
Warum komme ich darauf? Es gibt einige Zeitgenossen die sich auch für eine unless Schreibweise erwärmen können, auch wenn dieses Schlüsselwort nicht existiert. Denn folgendes Programmkonstrukt habe ich neulich entdeckt:
if( FileExist(”test.txt”) ); else
{
// Fehlerbehandlung
}
Dieses Konstrukt ist sehr unschön, da es den natürlichen “Lesefluß” unterbricht. Ist man der Meinung, dass dieses Vorgehen eine Bereicherung für die Quelltextqualität ist, so sollte man an “zentraler” Stelle eines der beiden folgenden Makros definieren:
#define unless( arg ) if( arg ); else
oder
#define unless( arg ) if( ! ( arg ) )
Es wäre auch eine gute Idee dieses Vorgehen in den Programmierrichtlinien festzuhalten. Überredet man nun noch seinen Editor unless als Schlüsselwort anzuzeigen, hat man eine ziemliche Bereicherung für einfache Fehlerfälle.
Was man aber dann tunlichst vermeiden sollte ist, einen else Zweig an seine unless Abfragen anzuhängen. In solchen Fällen ist wegen der Lesbarkeit stets eine if Abfrage zu verwenden.