Fonction imbriquée

Définition, exemples et bonnes pratiques

À retenir

  • Elle n'est accessible que depuis la fonction qui la contient (portée locale).
  • Elle permet de cacher des détails de calcul inutiles au reste du programme.
  • Elle peut accéder aux variables définies dans sa fonction parente.

Une fonction imbriquée est une fonction définie à l'intérieur du corps d'une autre fonction. Imaginez une petite poupée russe placée à l'intérieur d'une plus grande : elle n'est visible et utilisable que depuis l'intérieur de cette dernière, permettant ainsi de mieux organiser le code.

Étymologie

Le terme vient du verbe « imbriquer », qui signifie disposer des éléments comme des tuiles sur un toit (du latin imbrex, la tuile faîtière). En informatique, cela désigne une structure contenue dans une autre de même nature. L'usage s'est généralisé avec l'évolution des langages permettant la gestion de portées locales (scopes).

Exemples d'usage

  • En Python, définir une fonction calculer_prix() qui contient elle-même une fonction appliquer_taxe() utilisée uniquement pour son calcul interne.
  • En JavaScript, l'utilisation de fonctions imbriquées pour créer des fermetures (closures), permettant de mémoriser des variables d'un environnement parent.

Cas d'usage

On les utilise principalement pour l'encapsulation : si une tâche complexe nécessite une petite fonction d'aide (helper) qui ne sert nulle part ailleurs, on l'imbrique pour ne pas polluer le reste du programme. Elles sont aussi essentielles pour créer des fonctions qui conservent un état privé entre plusieurs appels.

Bonnes pratiques

Évitez d'empiler trop de niveaux d'imbrication (pas plus de deux ou trois), car cela rend le code difficile à lire et à tester. Si une fonction imbriquée devient trop volumineuse, il est préférable de l'extraire pour en faire une fonction indépendante.

Synonymes

fonction interne fonction locale sous-fonction

Antonymes

fonction globale fonction de premier niveau

Conseil

Utilisez les fonctions imbriquées pour « ranger » vos outils. Si vous écrivez une fonction complexe, demandez-vous si certaines étapes ne gagneraient pas à être isolées dans une petite fonction imbriquée pour rendre l'algorithme principal plus lisible.

Questions fréquentes

Une fonction imbriquée peut-elle être appelée de l'extérieur ?

Non, par défaut, elle est privée à la fonction parente. On peut toutefois l'exposer en la retournant comme résultat.

Est-ce que cela ralentit le programme ?

Généralement non, l'impact sur les performances est négligeable par rapport au gain de clarté et de sécurité du code.