2016-06-16 4 views
0

Ich weiß, das ist eine dumme Frage, die wahrscheinlich schon beantwortet wurde, aber ich finde es nicht einfach, danach zu suchen. Meine Frage ist, sollte ich "else" verwenden, wenn ich nicht brauche? VB.NET Mit ...Sollte ich sonst verwenden, wenn ich nicht brauche?

Function IsHappy(hasBeer As Boolean) 
     If hasBeer = True Then Return "Happy" 
     msgbox("I'm sad") 
     Return "Sad" 
End Function 

Oder ...

Function IsHappy(hasBeer As Boolean) 
    If hasBeer = True Then 
     Return "Happy" 
    Else 
     msgbox("I'm sad") 
     Return "Sad" 
    End If 
End Function 

Diese sehen mir gleich, mit der Ausnahme, dass die erste nur ein bisschen weniger Code ist zu sehen, aber die zweite ist ein bisschen klarer, aber ausführlicher. Gibt es einen Grund, einen von diesen über den anderen zu wählen?

Edit: Entfernt die offensichtliche Abkürzung von nur hasBeer Rückkehr und machten ihm etwas komplexen

Um zu klären, ich bin einfach nur, um herauszufinden, ob es ein guter Grund ist eine else-Anweisung zu verwenden, wenn die IF Wenn du es nicht tust, wirst du früher aussteigen. Ist es nur eine Stilwahl ohne klare Präferenz?

+3

Warum? _Return hatBeer_ und geht weiter. – Steve

+0

Sie sollten alle möglichen Codepfade definieren. Aber hier können Sie einfach 'hasBeer' zurückgeben. – Shaharyar

+0

Was ist, wenn hasBeer nicht wahr oder falsch ist? Fügen Sie einen anderen Else-Zweig hinzu, um diese Situation zu behandeln. Nun, es macht so viel Sinn wie ein 'else' nach einem Zweig hinzuzufügen, der in einer Rückkehr endet. – Will

Antwort

2

Es kommt darauf an.

Hier würde ich verwenden, um eine early exit:

Function IsHappy(hasBeer As Boolean) as Boolean 
    If hasBeer Then 
     Return True 
    End If 

    ' Complicated logic to determine whether another reason 
    ' for being happy can be determined 
    ... 

    Return False ' No reason found 
End Function 

Hier, ich If und Else verwenden würde:

Function IsHappy(hasBeer As Boolean) As Boolean 
    If hasBeer Then 
     ' Do some side effects 
     ... 

     Return True 
    Else 
     ' Do other side effects 
     ... 

     Return False 
    End If 
End Function 

In Ihrem Beispiel, würde ich einfach verwenden

Function IsHappy(hasBeer As Boolean) As Boolean 
    Return hasBeer 
End Function 
0

Ich weiß, dass Ihre hasBeer Flagge nur ein Beispiel ist - die Logik wird wahrscheinlich viel mehr Co sein Mplex.

Ich bevorzuge die erste Option, weil es weniger visuelle Unordnung gibt. Ich könnte Whitespace vor der letzten Zeile hinzufügen - es macht sehr deutlich, dass jeder Pfad, der so weit kommt, false zurückgibt.

0

Ausführlichkeit ist an und für sich kein Problem. Leistung ist gleich, Klarheit übertrifft fast immer cleveren Code in realen Anwendungen.

Verwandte Themen