Foros del Web » Programando para Internet » ASP Clásico »

Que opinan de mi codigo y como mejorarlo

Estas en el tema de Que opinan de mi codigo y como mejorarlo en el foro de ASP Clásico en Foros del Web. Hola, m gustaria le hecharan un vistaso a mi codigo y me dijeran que puedo mejorar de el ya que yo lo siento muy "sucio". ...
  #1 (permalink)  
Antiguo 13/07/2010, 09:50
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 7 meses
Puntos: 2
Que opinan de mi codigo y como mejorarlo

Hola, m gustaria le hecharan un vistaso a mi codigo y me dijeran que puedo mejorar de el ya que yo lo siento muy "sucio".
Explico:
Este codigo lo que haxce es ejecutar un procedure que busca datos por tiempo real, es decir la hora actual, pero si no se encuentran datos en esa hora lo que hace es cerrar la conexion con la DB y abrir otra para consultar datos por la hora anterior actual, y ara esto siempre y cuando no encuentre datos en la hora actual:
Código ASP:
Ver original
  1. '########################################## L15 SUR #######################################################################################
  2.     linea15s="L15s"
  3.         SET conexion15s=Server.CreateObject("ADODB.Connection")
  4.     conexion15s.Open "PROVIDER=SQLOLEDB; DATA SOURCE=VALP-MESSRV02;UID=sa;PWD=messrv;DATABASE=wasp "
  5.             SET registros15s=Server.CreateObject("ADODB.RecordSet")
  6.          registros15s.open"EXEC monitor '"&fecha&"','"&linea15s&"','"&horamia&"'",conexion15s
  7.        
  8.          SET conexionAVG15s=Server.CreateObject("ADODB.Connection")
  9.     conexionAVG15s.Open "PROVIDER=SQLOLEDB; DATA SOURCE=VALP-MESSRV02;UID=sa;PWD=messrv;DATABASE=wasp "
  10.             SET registrosAVG15s= Server.CreateObject("ADODB.RecordSet")
  11.        
  12.         registrosAVG15s.open"SELECT AVG(PESO)as promedio,o.linea from Optimas as o INNER JOIN pesos as p on o.codigo =p.codoptima WHERE fecha >='"&fecha&"' AND hora='"&horamia&"' AND o.linea='L15S' GROUP BY LINEA",conexionAVG15s
  13.    
  14.         do while not registrosAVG15s.eof
  15.         promedio=cint(registrosAVG15s.fields("promedio"))
  16.                
  17.     if registros15s.eof then
  18.     conexion15s.close
  19.     SET conexion15s=Server.CreateObject("ADODB.Connection")
  20.     conexion15s.Open "PROVIDER=SQLOLEDB; DATA SOURCE=VALP-MESSRV02;UID=sa;PWD=messrv;DATABASE=wasp "
  21.             SET registros15s=Server.CreateObject("ADODB.RecordSet")
  22.     registros15s.open"EXEC monitor '"&fecha&"','"&linea15s&"','"&hora2&"'",conexion15s
  23.         response.write("EXEC monitor '"&fecha&"','"&linea15s&"','"&hora2&"'")
  24.         do while not registros15s.eof
  25.        
  26.                     target=cint(registros15s.fields("target"))'## Definicion de variable Target
  27.                     OP=(promedio-target)/target  '### Definicion de operacion de la variable OP para ser mostrada en la tabla
  28.                     saving=(PROMEDIO-target)*NumBolsas '### Definicion y operacion de la variable SAVING para mostrar en la tabla
  29.         response.write("<tr>")
  30.         response.write("<td>"&registros15s.fields("linea")&"</td>")
  31.         response.write("<td>"&registros15s.fields("peso")&"</td>")
  32.         response.write("<td>"&registros15s.fields("target")&"</td>")
  33.         response.write("<td>"&registros15s.fields("marca")&"</td>")
  34.         response.write("<td>"&registros15s.fields("vaso")&"</td>")
  35.         'response.write("<td>"&registros6n.fields("fecha")&"</td>")
  36.         response.write("<td>"&fechahoy&" "&hora&":"&minuto&"</td>")
  37.         response.write("<td><h3>"&registros15s.fields("totality")&"</h3></td>")
  38.         response.write("<td>"&registrosAVG15s.fields("promedio")&"</td>")
  39.         if OP<=0 then response.write("<td>"&op&"<img src='http://www.pact-oil.co.uk/images/error.gif'</a></td>") else response.write("<td>"&op&"<img src='http://www.hospitalsierrallana.com/imagenes/gif_ok.gif'</a></td>") end if
  40.             if saving <0 then
  41.         response.write("<td bgcolor= '#FF0000'>  "&saving&" KG</td>")  
  42.         elseif saving >0 then  
  43.         response.write("<td bgcolor='#00FF00'>"&saving&" KG</td>")
  44.         elseif saving=0 then
  45.         response.write("<td>"&saving&" KG</td>")
  46.         end if
  47.         response.write("</tr>")
  48. registros15s.movenext
  49.     loop
  50.        
  51.         conexion15s.close
  52.     else
  53.    
  54.         do while not registros15s.eof
  55.        
  56.                     target=cint(registros15s.fields("target"))'## Definicion de variable Target
  57.                     OP=(promedio-target)/target  '### Definicion de operacion de la variable OP para ser mostrada en la tabla
  58.                     saving=(PROMEDIO-target)*NumBolsas '### Definicion y operacion de la variable SAVING para mostrar en la tabla
  59.         response.write("<tr>")
  60.         response.write("<td>"&registros15s.fields("linea")&"</td>")
  61.         response.write("<td>"&registros15s.fields("peso")&"</td>")
  62.         response.write("<td>"&registros15s.fields("target")&"</td>")
  63.         response.write("<td>"&registros15s.fields("marca")&"</td>")
  64.         response.write("<td>"&registros15s.fields("vaso")&"</td>")
  65.         'response.write("<td>"&registros6n.fields("fecha")&"</td>")
  66.         response.write("<td>"&fechahoy&" "&hora&":"&minuto&"</td>")
  67.         response.write("<td><h3>"&registros15s.fields("totality")&"</h3></td>")
  68.         response.write("<td>"&registrosAVG15s.fields("promedio")&"</td>")
  69.         if OP<=0 then response.write("<td>"&op&"<img src='http://www.pact-oil.co.uk/images/error.gif'</a></td>") else response.write("<td>"&op&"<img src='http://www.hospitalsierrallana.com/imagenes/gif_ok.gif'</a></td>") end if
  70.             if saving <0 then
  71.         response.write("<td bgcolor= '#FF0000'>  "&saving&" KG</td>")  
  72.         elseif saving >0 then  
  73.         response.write("<td bgcolor='#00FF00'>"&saving&" KG</td>")
  74.         elseif saving=0 then
  75.         response.write("<td>"&saving&" KG</td>")
  76.         end if
  77.         response.write("</tr>")
  78. registros15s.movenext
  79.     loop
  80.        
  81.         conexion15s.close
  82.        
  83. end if
  84. registrosAVG15s.movenext
  85.     loop
  86.        
  87.         conexionAVG15s.close
Saludos
  #2 (permalink)  
Antiguo 13/07/2010, 11:29
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: Que opinan de mi codigo y como mejorarlo

A ojo de buen cubero:

1) No usas ningún estilo de notación
2) No intercalas la parte de ASP con el HTML, eso es menos lento que solo llamar el método .write de response.
3) Creas objetos de forma innecesaria
4) No reutilizas código, lo copias tanto por el IF como por el ELSE

Última edición por Myakire; 13/07/2010 a las 11:45
  #3 (permalink)  
Antiguo 13/07/2010, 12:07
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Que opinan de mi codigo y como mejorarlo

Hola Myakire Muchas gracias por responder y darme tus consejos ahora bien tengo un par de cuestiones respecto a lo que dices:

1) No usas ningún estilo de notación
A que tipo de notacion te refieres? como para que o q?

2) No intercalas la parte de ASP con el HTML, eso es menos lento que solo llamar el método .write de response.

De esto no entiendo, como intercalarlo con HTML?

3) Creas objetos de forma innecesaria
Aqui me comentas sobre objetos que creo de forma innecesaria, cuales? los objetos que creo solamente son los de la hora.

4) No reutilizas código, lo copias tanto por el IF como por el ELSE
En esto estoy muy deacuerdo, de hecho es lo que mas he notado, que me recomiendas, usar metodos o funciones? para solo mandar a llamar la parte del codigo donde imprimo los resultados?
Saludis
  #4 (permalink)  
Antiguo 13/07/2010, 13:58
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: Que opinan de mi codigo y como mejorarlo

Ok, te paso a explicar de forma breve cada punto.

1) La notación es un estilo general para nombrar a tus variables, existen varios estilos de notación y ayudan para diferentes cosas, desde mejorar la legibilidad, hasta saber el tipo o contenido de una variable. Algunos lenguajes incluso tienen definidas convenciones de notación mnemónica que bien podrías aplicar en tus códigos como guía.

2) El intercalar ASP y HTML se refiere básicamente en abrir y cerrar las etiquetas <% y %> para el código del servidor y separar lo del cliente, es un estilo viejo de script donde en un mismo archivo mezclas ambas programaciones pero en ASP 3.0 es lo que se estila, puedes separar más la capa de negocios (entiéndase las reglas que el programa sigue) de la de presentación (sería el HTML en este caso) si usas DLL's, pero en tu caso no creo sea necesario. El generar la salida HTML con response.write solo hace más lenta la generación del HTML resultante y por ende tu página se ve más tarde en el browser.

3) Los objetos conexion15s y registros15s los creas dos veces y peor lo haces dentro de un ciclo, esta destrucción implícita de objetos consume más tiempo que si solo cierras el recordSet y lo abres con la nueva consulta (no he visto si es realmente necesario hacer eso, no he visto más que por encima tu código).

4) Un método y una función básicamente es lo mismo, quizá te refieres a una subrutina (o procedimiento) y a una función.
Las funciones regresan un valor y las subrutinas no, por lo poco que veo considero que una subrutina sería suficiente.

Saludos
  #5 (permalink)  
Antiguo 13/07/2010, 15:49
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Que opinan de mi codigo y como mejorarlo

Hola, muchas gracias por explicarme, sobre la subrutina creo que seria mejor una funcion porque tengio pensado hacer los mismos para todos los casos de la aplicacion aqui todo su code: http://pastebin.com/42ZqwWc6
Saludos
  #6 (permalink)  
Antiguo 14/07/2010, 06:32
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Que opinan de mi codigo y como mejorarlo

Hola

Al leer la explicación que das de lo que hace el código me llamó la atención. Ojeando el código no veo como logras hacer
Cita:
Este codigo lo que haxce es ejecutar un procedure que busca datos por tiempo real, es decir la hora actual, pero si no se encuentran datos en esa hora lo que hace es cerrar la conexion con la DB y abrir otra para consultar datos por la hora anterior actual, y ara esto siempre y cuando no encuentre datos en la hora actual
¿Estás usando Ajax con un temporizador, COMET? ¿o son simple consultas que se ejecuta cada vez que el usuario entra en tu web?
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 14/07/2010, 07:46
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Que opinan de mi codigo y como mejorarlo

Hola, nop no uso ajax solo refresco la pagina cada segundo, y solo cambian los valores que hay, es decir si hay 60 hace nuevamente lña consuylta y se suman los valores agregados y cambioa a 80 y asi durante todo el dia ya que a la base de datos se estan insertando alrededor de 500 valores por segundo mas o menos
  #8 (permalink)  
Antiguo 14/07/2010, 08:16
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Que opinan de mi codigo y como mejorarlo

Hola

Pues eso ha de consumir un montón de recursos por no decir lo molesto que ha de ser que cada segundo ses esté refrescando la página. No puedo hablarte casi que nada de COMET, asignatura pendiente, pero es justamente lo que necesitas. Abre una conexión en segundo plano y se queda abierta a la espera de que haya algún cambio. Es como lo que te comentaba de AJAX pero el polling es menor. Una buena esplicación la da @Panino en la faq de AJAX con un mini chat

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:11.