Qual è la migliore pratica per verificare più condizioni, in nessun ordine particolare?
L'esempio in questione deve verificare quattro condizioni distinte, in qualsiasi ordine, e non mostrare il messaggio di errore corretto.
Gli esempi seguenti usano una sintassi simile a C..
Opzione 1: controlla tutto in una volta
Questo metodo non è preferito perché i motivi per cui la condizione non è riuscita non sono facili da distinguere.
if (A && B && C && D) {
// continue here...
} else {
return "A, B, C, or D failed";
}
Opzione 2: Condizioni nidificate
In passato, usavo le istruzioni condizionali annidate, in questo modo. Questo può diventare davvero confuso.
if (A) {
if (B) {
if (C) {
if (D) {
// continue here...
} else {
return "D failed"
}
} else {
return "C failed";
}
} else {
return "B failed";
}
} else {
return "A failed";
}
Opzione 3: Fail-early
Questo è il metodo corrente che uso, che mi piace chiamare fail-early . Non appena viene colpita una condizione "cattiva", ritorna.
if (!A) {
return "A failed";
}
if (!B) {
return "B failed";
}
if (!B) {
return "C failed";
}
if (!D) {
return "D failed";
}
// continue here...
Opzione 4: raccolta errori
Un ultimo approccio che riesco a pensare è una sorta di collezione di errori. Se le condizioni per testare sono completamente separate, si potrebbe voler usare questo approccio.
String errors = "";
if (!A) {
errors += "A failed\n";
}
if (!B) {
errors += "B failed\n";
}
if (!C) {
errors += "C failed\n";
}
if (!D) {
errors += "D failed\n";
}
if (errors.isEmpty()) {
// continue here...
} else {
return errors;
}
Quali sono le migliori pratiche per verificare più condizioni? In termini di aspettative, si comporta idealmente come l'esempio 4, in cui vengono restituiti i dettagli di tutti gli errori.