Cosa ne pensi dell'argomento?
La metaprogrammazione è più comunemente associata a linguaggi non dinamici, poiché c'è un momento più difficile nel raggiungere determinati comportamenti (come l'implementazione di un ORM) senza molte linee di codice non produttive e non intelligenti.
Ma anche in linguaggi più dinamici come PHP, la generazione di codice può essere un vero salvavita e aumentare la produttività in grande quantità. Nei quadri moderni è molto comune disporre di impalcature che generano la maggior parte del modello, forma, test e azioni comuni per un determinato oggetto aziendale dichiarato. È uno dei motivi per cui framework come symfony o RoR hanno così tanto successo, quegli strumenti di generazione del codice rendono il codice coerente molto rapidamente e aumentano la produttività dei programmatori.
Nei siti web, la maggior parte delle interazioni ruota attorno a quattro azioni principali:
- Crea un elemento
- Recupera un set di elementi (con possibile filtro)
- Aggiorna un elemento con nuovi attributi
- Elimina un insieme di elementi
Almeno tutto ciò che ruota attorno a queste 4 azioni principali potrebbe e IMHO DOVREBBE essere realizzato utilizzando strumenti di generazione del codice per raggiungere la massima produttività.
Nella mia azienda, usiamo symfony, e il suo admin-generator è uno strumento eccezionale, che genera persino codice in fase di esecuzione (e lo memorizza nella cache), il che significa che non abbiamo nemmeno bisogno di usare alcun tipo di attività o strumento esterno per generare nuovo codice, dobbiamo solo pulire la nostra cache. Consiglio vivamente di utilizzare questo tipo di strumento per le operazioni CRUD.
Ma fare ciò che hanno fatto i fantastici collaboratori di symfony non è un compito facile. Ho implementato alcune attività di generazione del codice da solo e fare qualcosa di veramente coerente e con una vasta implementazione per coprire la maggior parte dei casi non è facile.
È qualcosa che aumenterà davvero la tua produttività?
Credo che la metaprogrammazione sia molto importante nei livelli di lavoro inferiori (framework, cache, compilatori, ecc.) Ma qualcosa che dobbiamo affrontare con estrema cautela se stiamo facendo cose a livello aziendale.
L'uso della generazione del codice è senza dubbio un importante incentivo per la produttività. Implementare i propri strumenti di generazione del codice, non tanto a meno che non si stia costruendo un framework da soli.
Quali sono alcune buone risorse in materia, tra libri, blog, presentazioni, ecc?
La migliore risorsa per comprendere la programmazione è sempre un codice sorgente valido e ben commentato. Direi che esaminare i generatori di amministratori di RubyOnRails e Symfony è una buona idea.