Generatori di codice automatico [chiuso]

13

A uno dei miei colleghi piace usare generatori di codice automatici, che creano grandi quantità di codice scarsamente documentato e molto difficile da mantenere.

Il costo dell'utilizzo di un generatore di codice vale il problema della manutenzione, per il tempo di creazione ridotto?

    
posta Mumbles 04.10.2010 - 17:23
fonte

4 risposte

10

Diciamo che:

Is the cost of a good automatic code generator worth it?

Sì.

Is the cost of a poor automatic code generator which creates more work for everyone else but it's author worth it?

Assolutamente no. Non ci sono scuse per codice scadente. Se qualcuno vuole essere intelligente e utilizzare la generazione automatica del codice, dovrebbe prendere il tempo necessario per assicurarsi che il codice generato sia un buon codice. Altrimenti, qual è il punto? Sta solo spingendo verso il basso e quando si tratta di produzione di codice, il buck dovrebbe fermarsi allo sviluppatore che lo ha scritto.

    
risposta data 04.10.2010 - 17:26
fonte
23

Il codice generato da un generatore non dovrebbe mai essere mantenuto a mano. Se è necessario modificarlo, il generatore e / o le sue impostazioni devono essere ottimizzati e eseguiti di nuovo. Considerando ciò, non importa se il codice risultante è incomprensibile e non documentato finché il meccanismo di generazione stesso è chiarissimo. (Assicurati di documentare il fatto che il codice è stato generato, e dove si trova il generatore e come funziona.)

Analogia: mentre il processore del mio computer esegue sempre codice macchina, non ho bisogno di sapere nulla a tale proposito se so come creare quel codice macchina usando linguaggio e compilatore di alto livello. Ho sentito che GCC a volte produce codice macchina subparente, ma a chi importa, a patto che funzioni perfettamente. I livelli di astrazione del database producono SQL per operare con il motore DB, ma a chi importa come sia l'SQL, a patto che il livello di astrazione sia chiaro e funzionante?

Se utilizzati correttamente, i generatori di codice possono sicuramente salvare non solo la creazione, ma anche i costi di manutenzione.

    
risposta data 04.10.2010 - 17:27
fonte
6

Un generatore di codice è un tipo di compilatore. Non ti preoccupare di quanto sia bello l'output del compilatore, devi solo lavorare con il codice sorgente. Usarlo e modificarlo manualmente è spesso più difficile della semplice scrittura da zero in una forma comprensibile dagli umani, e significa che non è possibile utilizzare nuovamente il generatore di codice senza molto lavoro, dal momento che si dovrà applicare il le stesse modifiche allo stesso codice incomprensibile.

Pertanto, possono andare bene se fanno parte del processo di compilazione e documentati come tali. L'input al generatore è quindi il codice sorgente e qualsiasi cosa produca è un risultato intermedio, da non confondere.

Tuttavia, se qualcuno ne sta usando uno per produrre codice incomprensibile che dovrebbe essere usato come fonte, allora quel codice sta producendo male. Non importa se la persona produce codice errato meccanicamente o manualmente, è ancora un codice errato e hai ancora un problema di qualità con esso.

Pertanto, è necessario trattarlo come qualsiasi altro sviluppatore che stia tagliando gli angoli e scrivendo codice errato. Non so come lo gestisci nel tuo negozio.

    
risposta data 04.10.2010 - 20:14
fonte
3

Dai commenti su altre risposte sembra che tu stia chiedendo degli standard di squadra piuttosto che dei generatori di codice.

Uno strumento di generazione del codice dovrebbe essere incluso nel progetto e dovrebbe (ove appropriato) essere parte del processo di costruzione. Un esempio potrebbe essere nel nostro team che utilizziamo Subsonic 2.2 che abbiamo generato classi dagli oggetti del database su build.

L'exe che fa questo viene controllato in SVN come parte del progetto in modo che un nuovo membro del team possa ottenere il nuovo progetto da svn e immediatamente lo costruisci senza dover capire da dove provengono tutte queste classi di database (in in questo esempio non includiamo nemmeno il codice generato in svn).

    
risposta data 04.10.2010 - 18:01
fonte

Leggi altre domande sui tag