Cuál es mejor entre estos dos estilos de código?

03/07/2007 - 22:54 por Rolandpish | Informe spam
Hola, estoy haciendo una aplicación en C# y tengo esta pregunta:

Tengo un método llamado sqlQueryBD el cual recibe una cadena de texto
(sentencia SQL) y la ejecuta contra una base de datos.
Además tengo una clase llamada sqlCompat con una propiedad llamada sqlText
cuyo propósito es traducir la sentencia sql a una sentencia "escapeada", por
ejemplo:
insert into people values ('cod001','Carl
Johnson','\\computer\directory\file01.txt')
es reemplazada por esta:
insert into people values ('cod001','Carl
Johnson','\\\\computer\\directory\\file01.txt')

El constructor de esa clase traductora es:
public sqlCompat(string text)
{
this.text = sqlCompatSTR(text.Trim());
}

Y estos son los métodos setter y getter de la propiedad sqlText:
private string text;
public string sqlText
{
get
{
return text;
}
set
{
text = sqlCompatSTR(value.Trim());
}
}
en donde sqlCompatSTR es el método encargado de hacer la traducción.

En un form llamado frmQuerySFG en el evento click de un botón tengo este
código y funciona perfecto:

sqlQueryBD(new sqlCompat("select * from table").sqlText);

Claro, de esta forma también funciona exactamente igual

//Declaro esta variable para uso de toda la frmQuerySFG (esto está fuera del
evento del botón
sqlCompat s_sql = new sqlCompat();

//Esto sí va en el evento click del botón
s_sql.sqlText = "select * from table";
sqlQueryBD(s_sql.sqlText);

Ok, cuál es mejor entre estos dos estilos?
El primer estilo es más rápido ya que solamente es una línea de código, pero
no sé si habrán problemas al estar creando una instancia cada vez que llamo
al método sqlQueryBD
El segundo estilo no crea una instancia cada vez que sqlQueryBD es llamado,
pero implica más líneas de código además de crear la variable para cada form
que hago.

He estado usando el primer estilo pero quiero saber si el segundo es mejor
para comenzar a usarlo.

Muchas gracias por su ayuda.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
04/07/2007 - 08:27 | Informe spam
"Rolandpish" wrote in message
news:
[...][1]
sqlQueryBD(new sqlCompat("select * from table").sqlText);

[...][2]
sqlCompat s_sql = new sqlCompat();
[...]
s_sql.sqlText = "select * from table";
sqlQueryBD(s_sql.sqlText);

Ok, cuál es mejor entre estos dos estilos?



Hay una tercera opción mejor que las anteriores: declara el método como
estático en la clase SqlCompat, y llámalo directamente con el nombre de la
clase, sin crear nunca una instancia:

class sqlCompat
{
public static string sqlCompatSTR(string s)
{
...
}
}

Luego lo llamas así:

sqlQueryBD(sqlCompat.sqlCompatSTR("select * from table"));
Respuesta Responder a este mensaje
#2 Rolandpish
05/07/2007 - 00:44 | Informe spam
Muchas gracias Alberto, tenés razón, será mejor declarar el método estático.

A manera de curiosidad entre los 2 enfoques que mecioné antes, el segundo
(el que no crea una instancia cada vez que llama al método) será mejor que el
primero verdad?

Muchas gracias por tu ayuda.
Respuesta Responder a este mensaje
#3 Alberto Poblacion
05/07/2007 - 08:22 | Informe spam
"Rolandpish" wrote in message
news:
A manera de curiosidad entre los 2 enfoques que mecioné antes, el segundo
(el que no crea una instancia cada vez que llama al método) será mejor que
el
primero verdad?



Sí, efectivamene es mejor no crear repetidamente instancias de la clase
mientras no haya necesidad de tenerlas, evitándoles así bastante trabajo al
gestor de memoria y al Garbage Collector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida