Cosa ne pensi dell'oggetto?
La metaprogrammazione è più comunemente associata a linguaggi non dinamici, poiché è più difficile ottenere 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 del codice può essere davvero un salvavita e aumentare la produttività in grande quantità. Nei framework moderni è molto comune disporre di uno scaffolding che genera la maggior parte del modello, della forma, del test e delle azioni comuni per un determinato oggetto di business che dichiari. È 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 dell'interazione ruota intorno a quattro azioni principali:
- Crea un elemento
- Recupera un insieme di elementi (con possibili filtri)
- Aggiorna un elemento con nuovi attributi
- Elimina un set di elementi
Almeno tutto ciò che ruota attorno a queste 4 azioni principali potrebbe e IMHO DOVREBBE essere raggiunto utilizzando strumenti di generazione del codice per ottenere la massima produttività.
Nella mia azienda, usiamo symfony e il suo admin-generator è uno strumento eccezionale, che genera anche codice in fase di esecuzione (e lo memorizza nella cache), il che significa che non abbiamo nemmeno bisogno di utilizzare alcun tipo di attività o strumento esterno per generare nuovo codice, abbiamo solo bisogno di pulire la nostra cache. FORNISCO FORTUNATO l'uso di questo tipo di strumento per le operazioni CRUD.
Ma, facendo ciò che hanno fatto i contributori di symfony, non è un compito facile. Ho implementato alcuni compiti di generazione del codice e fare qualcosa che sia veramente coerente e con un'implementazione ampia per coprire la maggior parte dei casi d'angolo non è facile.
È qualcosa che aumenterà davvero la tua produttività?
Credo che la metaprogrammazione sia molto importante nei livelli inferiori di lavoro (framework, caching, compilatori, ecc.) ma qualcosa che dobbiamo affrontare con estrema cautela se facciamo cose sul livello aziendale.
L'uso della generazione di codice è senza dubbio un grande incentivo alla produttività. Implementare i propri strumenti di generazione del codice, non tanto se non si sta costruendo un framework da soli.
Quali sono alcune buone risorse in materia, tra libri, blog, presentazioni, ecc?
La migliore risorsa per capire la programmazione è sempre un codice sorgente buono e ben commentato. Direi che esaminando RubyOnRails e Symfony i generatori di admin sono una buona idea.