¿Hay algún lenguaje que tenga una forma de creación de plantillas de código? Permítanme explicar a qué me refiero ... Hoy estaba trabajando en un proyecto de C# en el que una de mis clases era muy repetitiva, una serie de getters y setters de propiedades.¿Hay algún idioma que use plantillas de código?
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 ...
Me doy cuenta de que esto podría dividirse básicamente en un tipo, un nombre y un valor predeterminado.
Vi este artículo, que es similar a lo que imagino, pero no tiene espacio para los parámetros (por defecto).
Pero estaba pensando, hay muchas veces que el código se rompe en las plantillas.
Por ejemplo, la sintaxis podría ir como tal:
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
Siento que esto tendría muchas posibilidades en la escritura de código sucinta, SECO. Este tipo de cosas se podrían lograr de alguna manera en C# con reflexión, sin embargo, eso es lento y esto debería hacerse durante la compilación.
Entonces, pregunta: ¿Este tipo de funcionalidad es posible en cualquier lenguaje de programación existente?
Me parece un trabajo para T4 ... –
C++ tiene plantillas que se acercan a lo que usted quiere: http://www.cplusplus.com/doc/tutorial/templates/ –
Si su principal preocupación es la La tediosidad de entrar en la plantilla repetitiva (y no la posibilidad de cambios en su plantilla), Resharper tiene una buena característica Plantillas en vivo que realmente ayuda con esto. T4 es más poderoso (puede actualizar la definición de la plantilla y regenerar el archivo con la plantilla actualizada), pero también agrega cierta complejidad adicional. Vanilla VS tiene fragmentos de código, que también pueden ayudar. –