sábado, 30 de abril de 2011

malas practicas del codigo

Malas Practicas de Código


esta es la segunda entrada, en esta analizaremos de nueva cuenta código
con malas practicas y que puede ser mejorado, recuerda que las buenas
practicas de programación mejoran la calidad del programa y disminuyen
el tiempo correcciones




/*Hay que ser mas descriptivo cuando se genera un JavaDoc, recuerda que eso ayuda al momento de la documentaciel sistema.*/
/**
* Generates the paginated list
* @param query
* @param numPagina
* @param numRegPagina
* @param hmPaging
* @param request
* @return
*/
/*Los nombres de los parametros son espaingles, lo mejor es ser
coherente y manejar todo en un solo idioma.*/

public ArrayList getPagedList(String query, int numPagina, int numRegPagina, HashMap hmPaging, HttpServletRequest request) {
ArrayList list = new ArrayList();
ResultSet rs = null;
try {
this.openConecction();
PreparedStatement pstmt;
pstmt = con.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

/*No es Correcto usar Scroll Insensitive como
Propiedad para generar un ResultSet,Esto Consume mas memoria,
y en un sistema Web la cantidad de Memoria consumida es
Crucial para el buen funcionamiento*/


pstmt = setQueryvalues(pstmt, request);
pstmt.setFetchSize(numRegPagina);
rs = pstmt.executeQuery();
int cont = 1;
int fila = numRegPagina * (numPagina - 1) + 1;
if (rs.absolute(fila) && numRegPagina & gt;
0)
{


/*no es correcto hacer que el ResultSet vaya al numero absoluto,
esto consume una gran cantidad de memoria.*/


do {
Asset asset = new Asset();
asset.setId(new Integer(rs.getInt(arrayAsset[0])));
asset.setId_division(new Integer(rs.getString(arrayAsset[1])));
asset.setName_sp(rs.getString(arrayAsset[2]));
asset.setName_en(rs.getString(arrayAsset[3]));
asset.setStatus(new Integer(rs.getString(arrayAsset[4])));
asset.setUpdated(rs.getString(arrayAsset[5]));
asset.setImage(rs.getString(arrayAsset[6]));
asset.setId_assetType(new Integer(rs.getString(arrayAsset[7])));
list.add(asset);
cont++;
} while (rs.next() && (cont & lt;
= numRegPagina

)); } Integer reccordCount = new Integer(0);


/* El last va al ultimo registro, esto consume una gran cantidad de tiempo y memoria,
lo mejor es siempre dejar que este trabajo sea por parte de la base de datos,
haciendo un segundo query con un count a la base de datos se disminuye este problema */

if (rs.last()) {
reccordCount = new Integer(rs.getRow());
}
log.debug("reccordCount --> " + reccordCount);
hmPaging.put("reccount", reccordCount);


/*Jamas dejen un try y catch sin escalarlo correctamente este
tipo de practica es conocida como ocultamiento de errores ,
lo mejor es escalar la excepción mostrar los detalles y separar las excepciones,
para determinar si fue error del usuario o del programador */

} catch (Exception e) {
e.printStackTrace();
} finally {
this.closeConnection();
}
return (list);

}

No hay comentarios: