- Publié le
Pourquoi Ken de Street Fighter peut t'aider Ă mieux coder đ€
- Auteurs
- Nom
- CĂ©dric RIBALTA
Introduction
Si tu es un dĂ©veloppeur, tu connais sĂ»rement cette sensation : tu tombes sur une fonction qui s'Ă©tend sur plusieurs lignes, pleine de conditions et de boucles imbriquĂ©es, et tu te demandes comment tu vas en sortir vivant. đ”
Eh bien, imagine un instant que Ken de Street Fighter fait un "hurricane kick" Ă travers ta fonction. Tu visualises l'effet chaotique ? Câest exactement ce qui se passe quand une fonction est trop profondĂ©ment imbriquĂ©e.
Dans son livre incontournable Clean Code, Robert Martin (aka Uncle Bob) propose une rÚgle simple mais efficace pour prévenir ce genre de situations : limiter le nombre d'indentations dans une fonction. Cette approche permet d'éviter une cascade de conditions et de boucles qui rendent le code difficile à lire, à maintenir et à comprendre.
Voyons ensemble pourquoi câest si important, et surtout comment appliquer cette rĂšgle dans tes projets.
Pourquoi limiter les indentations ?
Lâindentation, câest ce que tu fais automatiquement lorsque tu ajoutes une nouvelle condition ou une boucle dans ton code. Bien que ça puisse sembler anodin au dĂ©but, chaque niveau supplĂ©mentaire dâindentation complique un peu plus la lecture et la comprĂ©hension du code. Voici pourquoi :
Un code imbriquĂ© devient difficile Ă lire đ
Chaque niveau supplĂ©mentaire dâindentation alourdit la structure de la fonction. Si tu dois parcourir plusieurs niveaux de conditions pour comprendre ce qui se passe, cela augmente le temps nĂ©cessaire pour dĂ©chiffrer le comportement du code.La complexitĂ© cognitive augmente đ»
Plus il y a d'indentations, plus la charge mentale nĂ©cessaire pour suivre le flux logique de la fonction est Ă©levĂ©e. Cela alourdit la comprĂ©hension et introduit des risques dâerreurs. Tu te retrouves Ă jongler avec plusieurs scĂ©narios en parallĂšle, ce qui est loin dâĂȘtre idĂ©al.Un code trop imbriquĂ© rĂ©vĂšle souvent une fonction qui fait trop de choses âïž
Une fonction qui accumule des niveaux d'indentation indique souvent qu'elle a plusieurs responsabilités. Or, une fonction devrait avoir une seule mission claire, comme le préconise le principe S de SOLID (Single Responsibility Principle).
Comment rĂ©duire les indentations dans ton code âš
Maintenant que tu sais pourquoi les indentations excessives sont problématiques, voyons comment les réduire. Voici trois astuces pour rendre ton code plus propre et plus lisible :
1. Inverser les conditions pour éviter les blocs de code imbriqués
Souvent, tu te retrouves avec une grande condition if
qui imbrique du code. Une bonne pratique est d'inverser la logique de cette condition et d'utiliser un return
ou un continue
plus tĂŽt pour sortir rapidement de la fonction. Cela permet de rĂ©duire les niveaux dâimbrication et de maintenir la fonction plus plate.
// Code imbriqué
function processOrder(order) {
if (order.isValid()) {
if (order.hasStock()) {
// code de traitement
}
}
}
// Code avec condition inversée
function processOrder(order) {
if (!order.isValid()) return
if (!order.hasStock()) return
// code de traitement
}
2. Extraire des sous-fonctions pour clarifier la logique
Si tu vois que ta fonction commence Ă accumuler les indentations, il est peut-ĂȘtre temps dâextraire certaines parties de la logique dans des sous-fonctions. Cela permet de segmenter le comportement en plusieurs fonctions plus petites, chacune ayant une mission bien dĂ©finie.
// Fonction trop imbriquée
function processPayment(order) {
if (order.isValid()) {
if (order.hasStock()) {
if (order.isPaid()) {
// traitement du paiement
}
}
}
}
// Fonction simplifiée avec sous-fonctions
function processPayment(order) {
if (!isOrderProcessable(order)) return
handlePayment(order)
}
function isOrderProcessable(order) {
return order.isValid() && order.hasStock() && order.isPaid()
}
function handlePayment(order) {
// traitement du paiement
}
3. Une fonction doit faire une seule chose
Câest un principe fondamental de Clean Code : chaque fonction ne doit avoir quâune seule responsabilitĂ©. Si tu vois que ta fonction fait plusieurs choses (par exemple, vĂ©rifier la validitĂ© dâune commande, traiter le paiement, envoyer un email, etc.), divise-la en plusieurs fonctions. Une fonction qui fait une seule chose est plus facile Ă comprendre, Ă tester et Ă maintenir.
// Mauvais exemple : trop de responsabilités
function completeOrder(order) {
if (order.isValid()) {
processPayment(order)
sendConfirmationEmail(order)
}
}
// Bon exemple : une seule responsabilité par fonction
function completeOrder(order) {
if (!order.isValid()) return
processOrderPayment(order)
}
function processOrderPayment(order) {
processPayment(order)
sendConfirmationEmail(order)
}
En rĂ©sumĂ© đ
Comme le montre notre analogie avec Ken de Street Fighter, une fonction avec trop dâindentations est aussi destructrice pour la lisibilitĂ© de ton code quâun coup de pied tournoyant lâest pour un adversaire. đ
C'est pourquoi il est crucial de limiter la profondeur des indentations pour rendre ton code plus lisible et plus simple Ă comprendre.
Alors, souviens-toi : les cascades d'eau, c'est bien đ§, mais les cascades de if
, de for
ou de while
... c'est Ă Ă©viter Ă tout prix. â
Cet article t'a donnĂ© envie de nettoyer ton code ? đ§Œ Alors, prends tes fonctions Ă bras-le-corps, rĂ©duis les indentations, et deviens maĂźtre du "code propre" ! đ