C'è qualche lingua che ha una forma di codice che modella? Lascia che ti spieghi cosa intendo ... Stavo lavorando ad un progetto C# in cui una delle mie classi era molto ripetitiva, una serie di getter e setter di proprietà.C'è qualche linguaggio là fuori che utilizza il codice di template?
public static int CustomerID
{
get
{
return SessionHelper.Get<int>("CustomerID", 0); // 0 is the default value
}
set
{
SessionHelper.Set("CustomerID", value);
}
}
public static int BasketID
{
get
{
return SessionHelper.Get<int>("BasketID", 0); // 0 is the default value
}
set
{
SessionHelper.Set("BasketID", value);
}
}
... and so forth ...
Mi rendo conto che questo potrebbe suddividere in un tipo, un nome e un valore predefinito.
Ho visto questo articolo, che è simile a quello che immagino, ma non ha spazio per i parametri (impostazione predefinita).
Ma stavo pensando, ci sono molte volte in cui il codice si articola in modelli.
Ad esempio, la sintassi potrebbe andare in quanto tale:
public template SessionAccessor(obj defaultValue) : static this.type this.name
{
get
{
return SessionHelper.Get<this.type>(this.name.ToString(), defaultValue);
}
set
{
SessionHelper.Set(this.name.ToString(), value);
}
}
public int CustomerID(0), BasketID(0) with template SessionAccessor;
public ShoppingCart Cart(new ShoppingCart()) with template SessionAccessor; // Class example
Mi sento come se questo avrebbe un sacco di possibilità per iscritto succinta, del codice SECCO. Questo tipo di cose sarebbe alquanto realizzabile in C# con il riflesso, tuttavia è lento e questo dovrebbe essere fatto durante la compilazione.
Quindi, domanda: questo tipo di funzionalità è possibile in qualsiasi linguaggio di programmazione esistente?
Suono come un lavoro per T4 per me ... –
C++ ha modelli che si avvicinano a ciò che si desidera: http://www.cplusplus.com/doc/tutorial/templates/ –
Se la vostra preoccupazione principale è il tediosità nell'inserire il boilerplate (e non la possibilità di modifiche nel vostro boilerplate), Resharper ha una bella funzione di Live Templates che aiuta davvero con questo. T4 è più potente (è possibile aggiornare la definizione del modello e rigenerare il file con il modello aggiornato), ma aggiunge anche una certa complessità aggiuntiva. Vanilla VS ha frammenti di codice, che possono anche aiutare. –