jenswinter.com
Software Development 24/7

Frühe Exits

August 11, 2008 23:24 by Jens

Genau wie Stefan bin ich ein Freund früher Exits. Sein Vorschlag sieht so aus:

public void DoSomething() {
    if (!a) {
        return;
}
    if (!b) {
        return;
}
    if (!c) {
        return;
}
    DoItRealy();
}

Ich hätte da aber noch einen kleinen Zusatz.

Die frühen Exits sollten so kurz wie möglich gehalten werden.
Bei frühen returns und throws handelt es sich um Guard Clauses, die nichts direkt mit dem Eigentlichen "Fleisch" der Methode zu tun haben und somit beim Lesen des Codes einen leichten Noise-Charakter haben. Das gefühlte Gewicht sollte m.M.n. so weit es geht auf dem wichtigen Teil der Methode liegen. Wenn ich z.B. wissen will, was darin passiert, will ich die Guards so schnell es geht überspringen können und nur bei Bedarf dort nachschauen.
Die Guards abzukürzen bedeutet, dass ich dabei sämtliche unnötigen Klammern weglasse. Das spart nämlich die eine oder andere Noise-Zeile ein.

public void DoSomething() {
    if (!a)
        return;
    if (!b)
        return;
    if (!c)
        return;
DoItRealy();
}

Oftmals habe ich auch die noch stärker abgekürzte Variante gesehen, in der das "return" in derselben Zeile wie das jeweils dazugehörende "if" steht:

public void DoSomething() {
    if (!a) return;
    if (!b) return;
    if (!c) return;
DoItRealy();
}

Das sieht auch sehr kompakt aus und ist ziemlich gut lesbar. Aber wie so Vieles ist das Geschmacksache.


Tags:
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Add comment


(Will show your Gravatar icon)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview

November 21. 2008 03:34