Red social para profesionales IT

Ingresar

jesus antonio

País y ciudad de residencia

Amigos

Bandeja de mensajes

Páginas

No se han creado páginas

Mis comunidades

No groups

Activity

  • jesus antonio published a blog post programacin en c# hace 1975 dias
    Comentarios
    • Andres Vettori hace 1949 dias

      Hola Jesus, te cuento lo que veo a ver si puedo ayudarte. En realidad no es nada complejo lo que hace este código, aunque si bastante discutible desde las mejores prácticas. 

      Lo primero que hace es ejecutar una consulta en la base de datos usando un Data Reader, leyendo TODA la tabla y TODAS las columnas (El * en el SELECT). Esto ya está mal y siempre se recomiendan ser explícito con incluir en la consulta sólo las columnas que vas a usar (en este caso 4) y además si estás intentando buscar / filtrar datos dejar que lo haga el motor.

      Este último comentario lo hago porque el código recorre TODO el resultado del Data Reader tratando de encontar registros que coincidan con el contenido de los TextBox1 y 2, y si es así carga los valores de las columnas buscadas (Nombre y Apellido, etc) en el Formulario y lo muestra.

      Ignoro porque las variables del formulario son estáticas, pero al menos en este código no se justificaría para nada. Las variables estáticas deben usarse con mucho cuidado ya que no es fácil garantizar que su contenido sea el esperado en cualquier momento sin rercurrir a mecanismos mas o menos complejos de sincronización (especialmente en las máquinas mas o menos nuevas que tienen multiples Cores).

      Luego de haber leído TODO el Reader, el código cierra la conexión utilizada.

      Algunas fallas de diseño en este código, adicional a lo ya mencionado:

      1) Puede abrir multiples formularios sin ninguna intervención humana, lo cual es MUY molesto para un usuario.

      2) No permite cancelar la operación, ni le da opción al usuario a accionar sobe un registro.

      3) Al usar variables estáticas, si hubiera mas de una coincidencia todos los formularios mostrarían los datos del último usuario. (si ya se que está buscando por un campo que parece ser único, pero igual es una mala práctica).

      4) Si encuentra uno, no finaliza el bucle de lectura del Reader. Si la semántica de este algoritmo era buscar sólo un registro (está implícito por el uso de las variables estáticas) entonces no debería continuar leyendo luego de haber encontado una coincidencia.

      5) Dejar que la búsqueda la haga el motor de base de datos, no recorrer tablas en memoria (a menos que sea un tema de caching, pero ese no es el caso aquí).

      6) Objetos declarados y no usados (y estáticos) como la conexión en el formnulario (micon).

       

      Bueno, dejemoslo ahí por ahora.

      Espero haberte ayudado a entender.

      Un abrazo,

      Andres.

La red

No wire posts yet