11.09.06

Eintrag-Details: Jedes SWITCH hat ein default:

Jedes SWITCH hat ein default:

Auch wenn IFs immer ein ELSE brauchen, wichtiger ist heute, dass ganz klar ist, dass jedes SWITCH eine Behandlung der unbehandelten Fälle braucht.

Ein SWITCH verzweigt anhand von CASEes. Man programmiert die benötigten Fälle und ist ist zufrieden. Ist man wirklich zufrieden? Nein, ist man nicht!

Was ist mit den Fällen, wo der CASE nicht greift? Die Aussage, die werden nicht gebraucht, ist unzureichend. Ist diese Annahme auch im Code berücksichtigt und für andere Programmierer erkennbar? Wie schreibst man das hin, dass es bedacht ist, dass die anderen Fälle nicht behandelt werden? Ganz einfach: Man verwendet das DEFAULT Statement. Und sei es nur, um zu dokumentieren, dass die unbehandelten Fälle absichtlich nicht behandelt werden.

Jedes SWITCH hat ein DEFAULT

Sagt einer zu mir, ich brauche kein DEFAULT, weil ich keine Fälle haben kann, die es nicht gibt. Ich benutze typsichere Enumerationen. Aha! Wir werden sehen...

Jahre später erweitere ich die Funktionalität und auch die ENUM, die andere in SWITCHes verwenden. Fall 1: Ohne DEFAULT fällt die Bearbeitung der neuen Mitgleider der ENUM in den SWITCHes einfach durch und es passieren reichlich undefinierte Dinge, womöglich zunächst sogar unbemerkt. Ganz prima! Fall 2: Es hat zwar einen DEFAULT aber der tut nix. Es passieren immer noch undefinierte Dinge, trotz DEFAULT. Und jetzt? Alles Blödsinn, was ich sagte, es muss ein DEFAULT her? Nein, ich erweitere meine Aussage:

Jedes DEFAULT meldet sich mit Logging oder Exception oder Rückgabewert, dass es auftrat obwohl es nicht hätte passieren sollen.

Und wo helfen jetzt die ENUMs? Gar nicht! Zumindest nicht für die zukünftige Vermeidung unbehandelter Fälle. Aber mich bitte nicht falsch verstehen. Unbedingt typsichere ENUMs verwenden in SWITCHes, wo immer es geht. Der Compiler hilft einem wirklich sehr, damit man erst gar nichts Falsches rein steckt in einen SWITCH.

Also immer an das DEFAULT denken! In diesem Sinne frohes Coden.

Kommentare:

Bisher keine Kommentare für diesen Eintrag...

Hinterlasse einen Kommentar:

Deine EMail-Adresse wird nicht angezeigt.
Deine URL wird angezeigt.
Erlaubte XHTML Tags: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
Optionen:
 
(Zeilenumbrüche werden zu <br />)
(Setze Cookies für Name, EMail & URL)

Zur Spamabwehr geben Sie bitte die dargestellten Zeichen in das Textfeld ein.

Lars

This is the long description for the blog named 'Blog B'.

Suche