Viel lustiger ist dieser Code, der aus einer der vorherigen Mails stammt
Code:
if (ctrl == NULL) {
ret = -EINVAL;
goto done;
}
Und ich dachte immer, 'goto' sei furchtbar böse.
Vergiss nicht: der Kernel ist in C geschrieben, da gibt es keine Exceptions oder
try ... finally
oder sowas. Das heißt, wenn man noch was aufräumen muss gibt es entweder die Möglichkeit mit einer Boolean-Variable und entsprechenden if-Bedingungen zu arbeiten oder man macht einfach ein
goto
. Ist vor allem im Betriebssystemumfeld recht gebräuchlich.
Im Free Pascal Compiler gibt es auch ein paar Gotos und vor einiger Zeit hab ich auch mal ein weiteres eingeführt (im Zusammenhang mit Generics), um ziemlich zum Anfang einer Funktion zurückzuspringen... Solange man Gotos nicht inflationär einsetzt, sondern nur an ausgewählten Stellen ist meiner Meinung nach nichts verwerfliches an ihnen und sie können die Lesbarkeit sogar erhöhen (aus ähnlichen Gründen bin ich auch ein Fan von
absolute
).
Gruß,
Sven