À retenir
- Permet au code de connaître sa propre structure durant l'exécution.
- Essentiel pour créer des bibliothèques et des outils flexibles et automatiques.
- Peut briser l'encapsulation (accéder à ce qui est caché) et impacter les performances.
La réflexivité est la capacité d'un programme informatique à s'examiner lui-même, un peu comme s'il se regardait dans un miroir pendant qu'il fonctionne. Cela lui permet de découvrir ses propres composants (fonctions, variables, classes) et même de les modifier en plein milieu de son exécution, sans avoir besoin de connaître leur nom à l'avance au moment où on écrit le code.
Étymologie
Issu du latin reflectere (« courber en arrière »), le terme exprime l'idée d'un retour sur soi. En informatique, il est étroitement lié au concept d'introspection et est devenu courant avec l'apparition de langages de haut niveau capables de manipuler leurs propres structures de données comme s'il s'agissait de simples informations.
Exemples d'usage
- En Python, utiliser la fonction
getattr(objet, "nom_methode")()pour appeler une méthode dont le nom est stocké dans une simple chaîne de caractères. - En Java, utiliser l'API
java.lang.reflectpour lister tous les champs privés d'une classe et changer leur valeur, même s'ils sont censés être cachés. - Les outils de test automatisé qui analysent votre code pour trouver et lancer toutes les fonctions commençant par le mot "test".
Cas d'usage
On l'utilise principalement pour créer des outils universels : des frameworks (comme Spring ou Symfony) qui configurent automatiquement des objets, des ORM qui transforment des classes en tables de base de données, ou encore des logiciels de débogage qui doivent inspecter le contenu de la mémoire en temps réel.
Bonnes pratiques
Il faut l'utiliser avec parcimonie. La réflexivité rend le code plus difficile à lire et à maintenir car les liens entre les éléments deviennent invisibles. De plus, elle ralentit souvent l'exécution du programme car l'ordinateur doit faire des recherches supplémentaires au lieu d'exécuter directement les instructions.
Synonymes
Antonymes
Conseil
Si vous débutez, considérez la réflexivité comme un "super-pouvoir" à n'utiliser que si vous ne pouvez pas faire autrement. Si vous pouvez appeler une fonction normalement, faites-le : c'est plus rapide, plus sûr et plus facile à comprendre pour vos collègues.
Questions fréquentes
Quelle est la différence entre introspection et réflexivité ?
L'introspection est la capacité de regarder son propre code (lecture seule), tandis que la réflexivité inclut souvent la capacité de le modifier (écriture).
Est-ce dangereux pour la sécurité ?
Oui, car un attaquant pourrait utiliser la réflexivité pour contourner des restrictions de sécurité ou accéder à des données sensibles normalement inaccessibles.