Was denkst du über das Thema?
Die Metaprogrammierung wird am häufigsten mit nicht dynamischen Sprachen in Verbindung gebracht, da es schwieriger ist, bestimmte Verhaltensweisen (z. B. die Implementierung eines ORM) ohne viele unproduktive und nicht intelligente Codezeilen zu erreichen.
Aber auch in dynamischeren Sprachen wie PHP kann die Codegenerierung wirklich lebensrettend sein und die Produktivität enorm steigern. In modernen Frameworks ist es sehr verbreitet, ein Gerüst zu haben, das die meisten gängigen Modelle, Formen, Tests und Aktionen für ein bestimmtes Geschäftsobjekt generiert, das Sie deklarieren. Dies ist einer der Gründe, warum Frameworks wie Symfony oder RoR so erfolgreich sind, dass diese Tools zur Codegenerierung sehr schnell konsistenten Code erstellen und die Produktivität des Programmierers steigern.
Auf Websites dreht sich der Großteil der Interaktion um vier Hauptaktionen:
- Erstellen Sie ein Element
- Abrufen einer Reihe von Elementen (mit möglicher Filterung)
- Aktualisieren Sie ein Element mit neuen Attributen
- Löschen Sie eine Gruppe von Elementen
Zumindest alles, was sich um diese 4 Hauptaktionen dreht, könnte und sollte IMHO mit Code-Generierungs-Tools erreicht werden, um maximale Produktivität zu erzielen.
In meinem Unternehmen verwenden wir symfony, und der Admin-Generator ist ein außergewöhnliches Tool, das sogar Code zur Laufzeit generiert (und zwischenspeichert), was bedeutet, dass wir dazu nicht einmal irgendeine Aufgabe oder ein externes Tool verwenden müssen Um neuen Code zu generieren, müssen wir nur unseren Cache bereinigen. Ich rate dringend, diese Art von Tool für CRUD-Operationen zu verwenden.
Aber es ist keine leichte Aufgabe, das zu tun, was symfony großartige Mitwirkende getan haben. Ich habe einige Code-Generierungsaufgaben selbst implementiert und es ist nicht einfach, etwas zu tun, das wirklich konsistent ist und mit einer breiten Implementierung die meisten Eckfälle abdeckt.
Ist es etwas, das Ihre Produktivität wirklich steigern wird?
Ich glaube, dass Metaprogrammierung in niedrigeren Arbeitsebenen (Frameworks, Caching, Compiler usw.) sehr wichtig ist, aber etwas, das wir mit äußerster Vorsicht angehen müssen, wenn wir Dinge auf der Business-Ebene tun.
Die Verwendung von Code-Generierung ist ohne Frage ein großer Produktivitätsschub. Implementieren Sie Ihre eigenen Tools zur Codegenerierung, nicht so sehr, es sei denn, Sie erstellen selbst ein Framework.
Was sind einige gute Ressourcen zu diesem Thema, darunter Bücher, Blogs, Diashows usw.?
Die beste Quelle, um die Programmierung zu verstehen, ist immer guter und gut kommentierter Quellcode. Ich würde sagen, dass ein Blick in RubyOnRails und Symfony- Administratoren eine gute Idee ist.