Que pensez-vous du sujet?
La métaprogrammation est le plus souvent associée aux langages non dynamiques, car il est plus difficile d'obtenir certains comportements (tels que la mise en œuvre d'un ORM) sans beaucoup de lignes de code non productives et non intelligentes.
Mais même dans des langages plus dynamiques tels que PHP, la génération de code peut réellement sauver la vie et augmenter considérablement la productivité. Dans les frameworks modernes, il est très courant d'avoir un échafaudage qui génère la plupart des modèles, formulaires, tests et actions communs pour un certain objet métier que vous déclarez. C'est l'une des raisons pour lesquelles des frameworks tels que symfony ou RoR ont autant de succès, ces outils de génération de code rendent le code cohérent très rapidement et augmentent la productivité des programmeurs.
Sur les sites Web, la plupart des interactions s'articulent autour de quatre actions principales:
- Créer un élément
- Récupérer un ensemble d'éléments (avec filtrage possible)
- Mettre à jour un élément avec de nouveaux attributs
- Supprimer un ensemble d'éléments
Au moins tout ce qui tourne autour de ces 4 actions principales pourrait et IMHO DEVRAIT être réalisé en utilisant des outils de génération de code pour atteindre une productivité maximale.
Dans mon entreprise, nous utilisons symfony et son générateur-admin est un outil exceptionnel, qui génère même du code au moment de l'exécution (et le met en cache), ce qui signifie que nous n'avons même pas besoin d'utiliser un type quelconque de tâche ou d'outil externe pour: générer du nouveau code, nous avons juste besoin de nettoyer notre cache. Je conseille FORTEMENT d'utiliser ce type d'outil pour les opérations CRUD.
Mais faire ce que symfony a fait d’impressionnants contributeurs n’est pas une tâche facile. J'ai moi-même implémenté certaines tâches de génération de code et faire quelque chose de vraiment cohérent et avec une implémentation large couvrant la plupart des cas difficiles n'est pas facile.
Est-ce quelque chose qui va vraiment augmenter votre productivité?
Je crois que la métaprogrammation est très très importante dans les niveaux de travail inférieurs (frameworks, mise en cache, compilateurs, etc.), mais que nous devons faire preuve de la plus grande prudence si nous agissons dans la couche métier.
L’utilisation de la génération de code est sans contredit un atout majeur pour la productivité. Implémentation de vos propres outils de génération de code, pas tant que vous ne construisez pas vous-même un framework.
Quelles sont les bonnes ressources sur le sujet, parmi les livres, les blogs, les diaporamas, etc.?
La meilleure ressource pour comprendre la programmation est toujours un code source bon et bien commenté. Je dirais que rechercher des générateurs d’administration RubyOnRails et Symfony est une bonne idée.