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?
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.
Im Fall von zwei Überprüfungen ist dann entweder alles in Ordnung, sobald Sie mehr hinzufügen, wird Option 1 schnell immer wünschenswerter!
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.
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.
Tags und Links nested coding-style