Hey !
Ce sujet n'est pas vraiment une demande d'aide mais plus une demande d'avis de personnes plus expérimentées sur ce langage.
Voilà, il y a quelques mois, j'ai découvert la réflexion, et depuis, je l'utilise assez régulièrement. Je trouve cela pratique de pouvoir manipuler des fonctions et des classes de la même façon qu'un objet, et donc adaptée à la création de structure pour des petits programmes.
Supposons un programme générant une liste en faisant varier certains paramètres.
Par exemple, on donne pour entrée :
Cette ligne contient #nombre# 'a' : #lettre#
Générant cela :
1 2 3 4 5
| Cette ligne contient 1 'a' : a
Cette ligne contient 2 'a' : aa
Cette ligne contient 3 'a' : aaa
Cette ligne contient 4 'a' : aaaa
Cette ligne contient 5 'a' : aaaaa |
La balise #nombre# de l'exemple a donc été paramétrée de façon à incrémenter le nombre précédent de 1 en partant de 1 et #lettre# de répéter 'a' une fois de plus à chaque ligne.
Ici, le programme propose donc deux possibilités d'évolution du paramètre : incrémentation et multiplication d'un string.
Je trouve que dans ce genre de conditions, la réflexion peut être utile, il suffirait que la fonction s'occupant de créer la liste finale prenne en paramètre les méthodes à appeler (donc ici, incrémentation et multiplication) pour générer convenablement la sortie. Aussi, si l'on souhaite ajouter une nouvelle possibilité d'évolution, il suffirait de créer la nouvelle méthode indépendamment et de la passer à son tour en paramètre si besoin. Ainsi, il n'y a pas besoin d'apporter de modification brute dans le code de génération du rendu et l'ajout en est donc plus simple.
Mais voilà, je sais que la réflexion est quelque chose de lourd, et donc que cette façon de voir les choses n'est peut-être pas la bonne. Je voudrais donc votre avis sur la (sur ?)utilisation de la réflexion, peut-être quelques conseils sur la bonne utilisation de cette dernière dans ce genre de situation et sur la flexibilité d'un programme, et éventuellement des alternatives que se soit dans la réflexion (pas celle de Java cette fois-ci), ou dans la technique !
Je vous remercie par avance !
Partager