33
Buenas Prácticas de Programación Todas las plantillas deben ser revisadas en los Navegadores Mozilla e Iexplorer antes de dar por terminada una tarea. Deben funcionar correctamente en los dos navegadores.

Buenas Practicas de Programacion

Embed Size (px)

Citation preview

Page 1: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Todas las plantillas deben ser revisadas en los Navegadores Mozilla e Iexplorer antes de dar por terminada una tarea. Deben funcionar correctamente en los dos navegadores.

Page 2: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Grabar los archivos en formato ISO-8859-15 para el manejo correcto de tildes.

Page 3: Buenas Practicas de Programacion

Buenas Prácticas de Programación

El nombre de plantillas, librerías, archivos, querys o funciones no deben llevar palabras reservadas de G. Ejm: query, fetch, gsqlcommand, value, ect.INCORRECTONombre Plantilla : ac-negquery.htmNombre Librería : fetch.libNombre Función : sub query { }Nombre Variable en javascript : value=”SI”;CORRECTONombre Plantilla : ac-negconsulta.htmNombre Librería : ciclo.libNombre Función : sub consulta { }Nombre Variable en javascript : valor=”SI”;

Page 4: Buenas Practicas de Programacion

Buenas Prácticas de Programación

En todas las plantillas y librerías siempre se deben declarar y comentariar las variables y las funciones.INCORRECTOJAVASCRIPTnumero=””;PERL$numero=””;

CORRECTOJAVASCRIPTvar numero=””; //Almacena el numero del AcuerdoPERLmy $numero=””; #Almacena el numero del Acuerdo

Page 5: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Todos los campos input en el formulario deben tener las propiedades id y name (SIEMPRE deben tener las dos propiedades y preferiblemente tener el mismo valor, ejemplo id=secuencial name=secuencial).

Si presenta problemas el uso del Botón Nuevo del fmanager (o cualquier otra utilidad del fmanager u otra función) bajo ninguna circunstancia se deben eliminar estas dos propiedades. Se debe preguntar inmediatamente cual es la forma correcta de solucionarlo.<input type="text" name="numcuenta" id="numcuenta" />

Page 6: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Cuando el id es diferente al name deben revisar que si hacen referencia a ese input con document.getElementById, estén usando el nombre del id y no el del name. Aunque como dice el punto anterior es mejor que tanto la propiedad id como name tengan el mismo valor.

Page 7: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Se debe verificar que la numeración en el tabindex sea correcta y que funcione tanto en Mozilla como en Iexplorer.

Page 8: Buenas Practicas de Programacion

Buenas Prácticas de Programación

También se debe revisar que después que se hagan peticiones AJAX (q2XML o serverload) el cursor se posicione en el campo correcto.

Page 9: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Cuando se envía un D.k cómo parámetro para abrir un popup u otra ventana se debe enviar como &D.k=xxxx para que en la plantilla que se abre se puedan recuperar directamente los campos de ese registro.

(En todas las plantillas de acuerdos antes se enviaba el deka del acuerdo como &acuerdodk=xxxx, con el tiempo lo hemos migrado y ahora usamos &D.k=xxxx).

Page 10: Buenas Practicas de Programacion

Buenas Prácticas de Programación

INCORRECTOSi el parámetro se envía &D.k=84859<g:eval ## { $dekaAcuerdo="var.D.k"; %consulta=(); $consulta="search qname=consulta D.k=$dekaAcuerdo"; $rta=&gsqlcommand($consulta,resulset); $numAcuerdo="$$rta[0]{'numero'}";} ## /g:eval>

A pesar que que se está enviando el parámetro como D.k, están haciendo una consulta innecesaria.

Page 11: Buenas Practicas de Programacion

Buenas Prácticas de Programación

INCORRECTOSi el parámetro se envía &acuerdodk=84859<g:eval ## { $dkAcuerdo="var.acuerdodk"; %consulta=(); $consulta="search qname=consulta D.k=$dkAcuerdo"; $rta=&gsqlcommand($consulta,resulset); $numAcuerdo="$$rta[0]{'numero'}";} ## /g:eval>

Se está enviando incorrectamente el parámetro lo que conlleva a realizar un query adicional que no sería necesario si se envía el parámetro como D.k.

Page 12: Buenas Practicas de Programacion

Buenas Prácticas de Programación

CORRECTOSi el parámetro se envía &D.k=84859<g:eval ## {

$numAcuerdo="$D.numero";

} ## /g:eval>

Se está enviando correctamente el parámetro como D.k y se está recuperando correctamente el campo número.

Page 13: Buenas Practicas de Programacion

Buenas Prácticas de Programación

En las plantillas que aún tienen 3 g:eval para llenar los campos actb deben modificarlo tal y como lo genera actualmente developer:

Page 14: Buenas Practicas de Programacion

Buenas Prácticas de Programación

INCORRECTO (Parte 1 de 3)<!-- LINEA --><!-- Inicialización de Arrays -->

<g:eval ## { $salida_LineaNombre = "var linea=new Array("; $salida_LineaClave = "var linea_clave=new Array(";

$salida_LineaDK = "var lineaDK=new Array(";

} ## /g:eval>

Page 15: Buenas Practicas de Programacion

Buenas Prácticas de Programación

INCORRECTO (Parte 2 de 3)<!-- Query a clase grupocat --><g:query qname=qlinea D.y=grupocat nivel=1 order by clave limit=null></g:query>

<fetch fname=qlinea>

<g:eval ## {

$salida_LineaNombre .= "'$D.nombre',";

$salida_LineaDK .= "'$D.D.k',";

$salida_LineaClave .= "'$D.clave',";

} ## /g:eval>

</fetch>

Page 16: Buenas Practicas de Programacion

Buenas Prácticas de Programación

INCORRECTO (Parte 3 de 3)<!-- Finalización de Arrays -->

<g:eval ## { chop($salida_LineaNombre); $salida_LineaNombre .= ");"; chop($salida_LineaClave); $salida_LineaClave .= ");";

chop($salida_LineaDK); $salida_LineaDK .= ");";

chop($salida_LineaGrilla);

} ## /g:eval>

Page 17: Buenas Practicas de Programacion

Buenas Prácticas de Programación

CORRECTO<g:query qname=qlinea D.y=grupocat nivel=1 order by clave limit=null></g:query><script>

salida_LineaDK=new Array(); salida_LineaClave=new Array();salida_LineaNombre=new Array();<fetch fname=qlinea> salida_LineaDK.push('$D.D.k'); salida_LineaClave.push('$D.clave'); salida_LineaNombre.push('$D.nombre');

</fetch>

</script>

Page 18: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Propiedades que deben tener los campos de los formularios. Si alguna de las propiedades con el llamado a estas funciones presenta incompatibilidad con algo específico que se esté programando en la plantilla, se debe consultar inmediatamente para encontrar la forma correcta de solucionarlo.<input type="text" name="numcuenta" id="numcuenta" value="" class="inputAUTO" size="10" maxlength="10" tabindex="1" onfocus="foco(this);" onblur="dejar(this);" />name --> nombre del campoid --> ide del campo

value --> valor que se le asigna

class --> ahi se usa input o inputAUTO (por ahora usamos solo input)

size --> tamaño de visualización de la caja de texto

maxlength --> cantidad de caracteres que se pueden escribir en una caja de texto

tabindex --> para la navegación con el tabulador

onfocus --> se debe llamar a la función foco(this) para el manejo de los colores

onblur --> se debe llamar a la función dejar(this) para el manejo de los colores

Page 19: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Siempre que se tenga que desarrollar una plantilla nueva, se debe hacer con Developer, que es nuestra herramienta de desarrollo. Si tienen inconvenientes, por medio de los jefes se debe hacer llegar esta información al grupo de Developer.

Al usar developer, tenemos código actualizado dentro de nuestras plantillas.

Page 20: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Siempre que se llame a la función KeytoUppercase en la propiedad onKeyPress (onKeypress="KeytoUppercase(event)") se debe enviar cómo parámetro el objeto (event) para que no genere errores en Mozilla.

Page 21: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Siempre que desde la plantilla se vaya a navegar a otra plantilla se debe hacer con el formulario gsecureform, para cuando se vaya a implementar la seguridad de las plantillas. En el body, al finalizar el formulario de la plantilla se debe crear el siguiente formulario:<form id='gsecureform' name='gsecureform' action='' method='post'></form>

Cuando se vaya a navegar a la plantilla necesaria se debe hacer de la siguiente manera:document.getElementById("gsecureform").action="$C.cgiurl/v.cgi?D.templ=$C.htmg/htmngf/acdomicilio.htm&email="+"var.email";

document.getElementById("gsecureform").submit();

Page 22: Buenas Practicas de Programacion

La etiqueta <form ...> al igual que la etiqueta <input ...> debe llevar las propiedades id y name.

Buenas Prácticas de Programación

Page 23: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Siempre que se hagan peticiones AJAX se debe programar el sincronismo con la función controladora, para que la plantilla trabaje correctamente en Mozilla.

Page 24: Buenas Practicas de Programacion

Buenas Prácticas de Programación

En las plantillas NO se deben usar las funciones setinterval y settimeout.

Page 25: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Cada plantilla debe lanzar solo las consultas necesarias para iniciar la funcionalidad de la misma, no se deben hacer mas consultas de las necesarias porque esto influye en los tiempos de carga.

Page 26: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Cuando se escriben consultas se debe verificar que tanto la clase como los campos realmente existen, para evitar errores en el futuro con consultas mal escritas.

Siempre se deben verificar las consultas.

Page 27: Buenas Practicas de Programacion

Buenas Prácticas de Programación

En las plantillas intermedias que utilizamos para realizar validaciones, se debe implementar el uso de métodos, ya que al tener g:eval en la plantilla intermedia se parsea el código de la misma cada vez que se carga.

Page 28: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Con g:eval<g:evalrequire "$C.htmg/acuerdolib/gestion.lib";&alta_acuerdo($tvendible,$origen,$fechavalor,$fechactual);&alta_acpsimple($dkacuerdoalta,$fechavalor,$fechactual);..../g:eval>

Con Métodos$C.bancamethods/acuerdos/gestion::method::gestion('salida','salida1');eval.salidaeval.salida1

Page 29: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Uso correcto de la función gsqlcommand para inserción, modificación y eliminación.

&gsqlcommand("insert D.y=acuerdo numero=$numero timefecha=$fecha”);

&gsqlcommand("update set D.k=$deka to numero=$numstr"); Siempre que se va a eliminar un registro se debe comprobar que la variable que contiene el deka o la lista de dekas tenga valores, para no eliminar clases completas. if ($rta) { &gsqlcommand("delete D.y=acuerdo D.k=$rta"); }

Page 30: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Consulta sin parámetro adicionalour %qacuerdo=();$qacuerdo=&gsqlcommand("search qname=qacuerdo

D.y=acuerdo top=10");print "<br>qacuerdo=$qacuerdo";

Page 31: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Consulta con parámetro hashour %qacuerdo=();$qacuerdo=&gsqlcommand("search qname=qacuerdo

D.y=acuerdo top=10",'hash');print "<br>qacuerdo=$qacuerdo";foreach $deka(keys %sqlreg){print "<br>Numero = $sqlreg{$deka}{'numero'}";}

Page 32: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Consulta con parámetro resulsetour %qacuerdo=();$qacuerdo=&gsqlcommand("search qname=qacuerdo

D.y=acuerdo top=10",'resulset');my $longitud=@$qacuerdo;for($k=0;$k<$longitud;$k++){ print "<br>Numero = $$qacuerdo[$k]{'numero'}";}

Page 33: Buenas Practicas de Programacion

Buenas Prácticas de Programación

Consulta con readk$hacuerdo=&gsqlcommand("readk D.k=$deka");print "<br>numero=$$hacuerdo{'numero'}";