Ho una cosa abbastanza complessa inserita in un modello T4. Fondamentalmente io prendo qualcosa comeC'è qualcosa là fuori per rendere il codice T4 più ... pulito?
{= foo =} più testo ...
e convertirlo in una classe (vista) in questo modo:
public class MyView
{
public string foo{get;set;}
public string Write()
{
return [email protected]" more text...";
}
}
Il codice generato è ovviamente molto più complicato di così. Ad ogni modo, il modello T4 ha oltre 600 linee di codice in questo momento e sta diventando davvero veloce e ingestibile. Credo che il problema principale sia la combinazione di codice e "contenuto" (cioè codice statico). Non sono sicuro di come risolvere questo problema in modo pulito (anche se ovviamente non influisce sul codice generato). Inoltre, non vedo alcun modo fattibile per testare il mio codice T4, oltre a provare semplicemente gli errori di esecuzione T4. E ovviamente sembra esserci il compito quasi impossibile di testare il codice generato.
Ci sono "Model-View" tipo quadri o tecniche che posso usare per fare il mio codice del template T4 più pulito?
Questa opzione potrebbe non essere un'opzione, ma preferisco [Modelli Resharper] (http://www.jetbrains.com/resharper/features/code_templates.html) su modelli T4. Inoltre, [Resharper] (http://www.jetbrains.com/resharper/) è uno strumento straordinario anche per altri usi. Ne vale la pena. – TylerOhlsen
Resharper è un buon strumento, ma IMHO che confronta i modelli di Resharper con T4 sta confrontando mele e arance. I modelli di Resharper stanno promuovendo l'anti-pattern di copia-incolla con il supporto degli strumenti che porta a un codice sempre più ridondante che devi mantenere, aumentando così i costi di manutenzione. T4 (e altri strumenti) minimizza la ridondanza in quanto si scrive un meta-programma (che ha una ridondanza bassa) che genera artefatti di codice (con elevata quantità di ridondanza). La chiave è che la connessione casuale tra il meta-programma e il codice generato non viene persa. – FuleSnabel