À retenir
- Permet au programme d'inspecter ses propres classes, méthodes et attributs.
- Offre une grande flexibilité pour créer des outils universels.
- Peut impacter les performances et la lisibilité du code si elle est surutilisée.
La réflexion est la capacité d'un programme informatique à s'analyser lui-même pendant qu'il s'exécute. C'est un peu comme si un logiciel disposait d'un miroir lui permettant de découvrir ses propres composants (ses fonctions, ses variables) et de les manipuler en temps réel, sans que tout ait été figé à l'avance lors de l'écriture du code.
Étymologie
Dérivé du latin reflectere (« courber en arrière »), le terme évoque l'idée que le code fait un retour sur lui-même. En informatique, cela désigne le passage d'une exécution aveugle à une capacité d'auto-examen de la structure du programme.
Exemples d'usage
- Un outil de test qui parcourt automatiquement votre code pour trouver toutes les fonctions dont le nom commence par "test" afin de les lancer.
- Un logiciel qui transforme automatiquement un formulaire de site web en base de données en lisant le nom des champs saisis par l'utilisateur.
Cas d'usage
Ce concept est essentiel pour créer des outils flexibles comme les frameworks (qui doivent gérer du code qu'ils ne connaissent pas encore), les bibliothèques de sérialisation (conversion de données en texte JSON ou XML) et les environnements de développement (IDE) pour proposer l'auto-complétion.
Bonnes pratiques
La réflexion doit être utilisée comme un dernier recours. Elle est plus lente qu'un accès direct car elle demande un travail d'analyse supplémentaire à l'ordinateur. De plus, elle peut briser la sécurité d'un programme en permettant d'accéder à des éléments normalement cachés ou privés.
Synonymes
Antonymes
Conseil
Si vous apprenez la programmation, considérez la réflexion comme une baguette magique : puissante mais risquée. Ne l'utilisez pas pour vos algorithmes de tous les jours, mais comprenez-en le principe pour mieux utiliser les outils professionnels qui s'en servent en coulisses.
Questions fréquentes
Quelle est la différence avec l'introspection ?
L'introspection est l'action de regarder sa structure (lecture), tandis que la réflexion inclut souvent la capacité de modifier cette structure (écriture).
Est-ce que tous les langages de programmation le permettent ?
Non. C'est très courant dans les langages comme Java, C#, Python ou PHP, mais beaucoup plus complexe ou limité dans des langages comme le C ou le C++.