À retenir
- Elle n'est accessible que depuis la fonction qui la contient.
- Elle aide à organiser le code en masquant la complexité.
- C'est la base du mécanisme des fermetures (closures).
Une fonction interne est une fonction définie à l'intérieur du code d'une autre fonction. Imaginez une petite machine spécialisée rangée à l'intérieur d'une plus grande machine : elle n'est visible et utilisable que par cette grande machine pour accomplir une tâche précise sans encombrer le reste de l'atelier.
Étymologie
Le terme vient du latin functio (exécution, accomplissement) associé à l'adjectif interne pour désigner sa position géographique dans le code source. En informatique, cela souligne la notion de portée (scope), limitant l'existence de la fonction à son environnement immédiat.
Exemples d'usage
- En Python, définir une fonction
calculer_tva()à l'intérieur d'une fonctiongenerer_facture(). - En JavaScript, créer une fonction dans une autre pour capturer des variables locales (concept de closure ou fermeture).
Cas d'usage
On utilise les fonctions internes pour l'encapsulation : elles permettent de cacher des détails complexes qui ne servent qu'à une seule partie du programme. Elles sont aussi essentielles pour créer des fermetures (closures), permettant à une fonction de se souvenir de l'état de son environnement de création.
Bonnes pratiques
Évitez de trop imbriquer les fonctions (pas plus de deux niveaux) car cela rend le code difficile à lire. Si une fonction interne devient trop longue ou complexe, il est souvent préférable de l'extraire pour en faire une fonction indépendante.
Synonymes
Antonymes
Conseil
Si vous débutez, voyez les fonctions internes comme des 'assistantes personnelles' : elles font le travail répétitif pour leur fonction patronne sans que le reste du monde ait besoin de savoir comment elles travaillent.
Questions fréquentes
Puis-je appeler une fonction interne depuis l'extérieur ?
Non, par défaut, elle est 'privée' et n'existe que durant l'exécution de la fonction parente.
Est-ce que cela ralentit le programme ?
L'impact est généralement négligeable sur les ordinateurs modernes, bien qu'elle soit recréée en mémoire à chaque appel de la fonction parente.