Publié le

Pourquoi Ken de Street Fighter peut t'aider Ă  mieux coder đŸ€”

4 min lecture - 765 mots
Auteurs
  • avatar
    Nom
    CĂ©dric RIBALTA
    Twitter
post image

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 :

  1. 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.

  2. 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.

  3. 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" ! 👊