Quale codice vorresti considerare l'utilizzo di un generatore di codice come CodeSmith per?

StackOverflow https://stackoverflow.com/questions/4720186

  •  12-10-2019
  •  | 
  •  

Domanda

Io uso CodeSmith per i modelli PLINQO, di costruire il mio DAL dagli oggetti mia DB; funziona benissimo!

Credo che sia l'uso primario di applicazioni generatore di codice, ma sono curioso ... cosa altro codice vorresti considerare l'utilizzo di un generatore di codice per? Avete modelli CodeSmith che si utilizza di frequente (in caso affermativo, che cosa fa)?

È stato utile?

Soluzione

Non ho usato CodeSmith, ma ho fatto un bel po 'di generazione del codice. Noteably Ho scritto la maggior parte di un sistema di gestione della configurazione (CM) per un sistema WiMAX, in cui il codice CM è stato generato per 3 diverse piattaforme. L'unica differenza era il modello CM per ogni piattaforma.

Il modello era in un costume Domain Specific Language (DSL) che abbiamo costruito avuto un parser per. Il linguaggio era uno stile di base del contenitore / elemento in cui i contenitori poteva nido e hanno un identificatore, e gli elementi erano di tipi predefiniti. Documentazione era un attributo di elementi e contenitori. Si potrebbe aggiungere Lua frammenti alle definizioni degli elementi e contenitori per fare la validazione semantica (ad esempio, il valore è nella corretta gamma, se si tratta di un indirizzo IP è in un intervallo CIDR definito altrove, ecc.).

Il parser generato un albero di sintassi che abbiamo poi spinto a modelli. Il linguaggio di template è stata una parziale attuazione C di StringTemplate . Abbiamo usato per generare:

  • Un modello specifico API C che le applicazioni potrebbero mettere in per ottenere valori di configurazione,
  • Il codice Lua raccolti per la validazione del modello e di fornire messaggi di errore utile,
  • due "backend" per l'API che il gestore valori in memoria (per la manipolazione temporanea di un modello), e in un sistema di database (per la condivisione tra processi),
  • Configurazione file di parser e scrittore,
  • documentazione HTML, e
  • Command Line Interface (CLI) implementazione per la visualizzazione interattiva e la modifica di una configurazione.

In retrospettiva, avrei dovuto semplicemente utilizzato Lua direttamente come DSL. Sarebbe stato più prolisso, ma avendo il parser già lì e un sacco di Lua scelte di template a mia disposizione avrebbe risparmiato un sacco di sforzo di sviluppo.

Per le cose che hanno una struttura repetivie e regole ben definite su ciò che queste cose devono fare, la generazione di codice può essere una cosa meravigliosa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top