Avez-vous déjà vu un bout de code comme ça ?
function canDrink(person) {
if (person?.age !== null) {
if (person.age < 18) {
console.log('No');
} else if (person.age < 21) {
console.log('Not in the US');
} else {
console.log('Yup');
}
} else {
console.log('You are not a person');
}
}
const john = { p: 22 };
canDrink(john); // 'Yup'Même si cela est très commun, nous pouvons convenir que ce n'est ni très lisible, ni très maintenable. C'est bien sûr un exemple très simple, mais je suis sûre que vous avez déjà vu des if / else imbriqués dans des fonctions de plusieurs dizaines de lignes 🙈🏃♀️.
Pour éviter cela, essayons de simplifier le code.
Prenons l'exemple ci-dessus.
Nous allons d'abord nous occuper du if / else principal : au lieu de tester que l'âge de la personne n'est pas nul, faisons l'inverse et utilisons un return pour sortir de la fonction lorsque nous rencontrons ce cas.
function canDrink(person) {
if (person?.age === null) {
console.log('You are not a person');
return; // Stop the execution here.
}
if (person.age < 18) {
console.log('No');
} else if (person.age < 21) {
console.log('Not in the US');
} else {
console.log('Yup');
}
}Maintenant que nous avons enlevé un niveau d'imbrication, faisons la même chose pour le reste de la méthode, ce qui donne :
function canDrink(person) {
if (person?.age === null) {
console.log('You are not a person');
return;
}
if (person.age < 18) {
console.log('No');
return;
}
if (person.age < 21) {
console.log('Not in the US');
return;
}
console.log('Yup');
}Bien que cela soit déjà beaucoup plus lisible, ce n'est pas complètement satisfaisant non plus. Nous pouvons faire mieux en séparant notre code en plusieurs fonctions :
function canDrink(person) {
if (person?.age === null) {
console.log('You are not a person');
return;
}
const response = canDrinkResponse(person.age);
console.log(response);
}
function canDrinkResponse(age) {
if (age < 18) return 'No';
if (age < 21) return 'Not in the US';
return 'Yup';
}Tada 👏
C'est maintenant beaucoup plus lisible, et ce sera également bien plus facile à maintenir et débugger.
Je vous invite à essayer cette approche dans votre code pour le rendre plus propre, si ce n'est pas déjà le cas, simplement en évitant les else.