Stil von if: zu verschachteln oder nicht zu verschachteln

7

Ein Kollege von mir und ich diskutierten über das folgende Best-Practice-Thema.
Die meisten Funktionen / Methoden beginnen mit einigen Parameterüberprüfungen.

Ich befürworte den folgenden Stil, der das Verschachteln vermeidet.

%Vor%

Er, der aus einem eher funktionalen / logischen Programmierhintergrund kommt, bevorzugt das Folgende, weil er die Anzahl der Austrittspunkte aus der Funktion reduziert.

%Vor%

Welchen würden Sie bevorzugen und warum?

    
Marco 26.05.2010, 10:13
quelle

9 Antworten

12

Ich persönlich bevorzuge den ersten Stil, da ich glaube, dass er eine logische Trennung zwischen "Fehlerfällen" und "Methodenlogik" bietet. Es gibt einen wohldefinierten Block am Anfang der Methode, der alle Fehler in der Eingabe auswertet und bearbeitet, und dann geht es bei der restlichen Methode darum, was die Methode eigentlich tun soll.

Es ist eine Art Trennung von Bedenken auf der Mikroebene, denke ich.

    
Fredrik Mörk 26.05.2010 10:21
quelle
5

Solange der Stil in der Codebasis konsistent ist, wäre jeder dieser beiden Stile für mich in Ordnung.

    
b.roth 26.05.2010 10:19
quelle
2

Im Fall von zwei Überprüfungen ist dann entweder alles in Ordnung, sobald Sie mehr hinzufügen, wird Option 1 schnell immer wünschenswerter!

    
Paul Creasey 26.05.2010 11:11
quelle
1

Ich bevorzuge es, meine Eingabe-Parameter-Validierung am Anfang der Funktion durchzuführen und nur return dort zu machen. Daher bevorzuge ich den ersten Ansatz meistens. Wenn es nur eine Verschachtelungsebene gibt, wähle ich vielleicht die zweite Option.

    
Naveen 26.05.2010 10:20
quelle
0

Die zweite, die ich normalerweise bevorzuge, es sei denn der gesamte Funktionskörper wird in die X-Anzahl der if -Anweisungen eingeschlossen. Wenn ja, würde ich die erste Option wählen.

    
Delan Azabani 26.05.2010 10:17
quelle
0

Ich bevorzuge die erste. 5298529357 Gedankengänge graust mir nur auf die Nerven.

Fügen Sie dazu die Tatsache hinzu, dass wenn Sie sofort zurückkehren, es offensichtlich ist, dass (Parameter eins ist hässlich) ein Fehler ist.

    
cHao 26.05.2010 10:20
quelle
0

Der am besten lesbare Stil ist:

%Vor%

Zumindest für mich:)

EDIT: Sorry, missverstanden die Frage. Ich stimme für die erste, mag keine tiefe Verschachtelung.

    
Sergius 26.05.2010 14:36
quelle
0

Meiner Meinung nach hängt das nur von der Art der Fehlerprüfung ab, die Sie brauchen.
Wenn zum Beispiel der Parameter eins ugly ist, aber im folgenden Code es möglich ist, seinen Status in pretty zu ändern, ist die zweite Methode vorzuziehen.
Wenn der Fehler jedoch fatal ist und nicht behandelt werden kann, sollten Sie sofort zurückkehren.
Es gibt eine dritte Option, bei der der zweite Stil am besten passt und wenn Sie alle Fehler in einer kohärenten Fehlermeldung zusammentragen möchten.
Der zweite Stil sollte nicht zuerst auf Gültigkeit, sondern auf Ungültigkeit prüfen.
Wie für die persönliche Präferenz wäre ich viel glücklicher mit dem ersten Stil.

    
the_drow 26.05.2010 14:44
quelle
0

Unser hauseigener Stil besteht darin, mehrere return -Punkte zu vermeiden und auch die Anzahl der Verschachtelung zu begrenzen. Daher würde ich wahrscheinlich Ihre Vorab-Plausibilitätsprüfungen kombinieren und so etwas wie Folgendes tun:

%Vor%     
GrahamS 26.05.2010 14:46
quelle

Tags und Links