Mostrando entradas con la etiqueta Buenas practicas. Mostrar todas las entradas
Mostrando entradas con la etiqueta Buenas practicas. Mostrar todas las entradas

domingo, 2 de junio de 2013

Java buenas practicas. Recorrer mapas.



Si vamos a realizar recorridos de objetos en mapas, y hacemos uso de un entorno de desarrollo de Java posterior a JDK 1.5, se aconseja el uso de Map.Entry que ha demostrado ha demostrado que es sensiblemente más rápido que el uso de objetos Iterator.

Un ejemplo de cómo quedaría el código para recorrer los mapas sería el siguiente, donde hm en el ejemplo es un objeto HashMap.

for (Map.Entry entry:  hm.entrySet()) {
    System.out.println("Clave: " + entry.getKey() + ", Valor: " + entry.getValue());
}

martes, 21 de mayo de 2013

Java buenas prácticas concatenación de Strings



Se ha demostrado a lo largo de la vida de Java, que el operador +, para la concatenación de objetos String, es ineficiente, ya que al utilizarse sobre variables, el compilador genera nuevas instancias (reserva memoria para ello) del objeto, para realizar la concatenación.

Por eso es aconsejable evitar la concatenación de objetos String mediante el operador +.
Por lo que es una mala práctica hacer lo siguiente: String s = s1 + s2 + “texto” + s3

Aunque no tiene efecto al hacer lo siguiente: String s = “Esto” + “es” + “una prueba”, ya que en este caso como las String a usar son constantes, no se realiza la reserva de la memoria, sino que el compilador lo agrupa todo en una única String.



Para realizar la concatenación citada en el primer caso, se deberá hacer lo siguiente:

StringBuffer strbuf = new StringBuffer();
strbuf.append(s1);
strbuf.append(s2);
String s = strbuf.toString();

 

jueves, 1 de septiembre de 2011

Buenas practicas en Java

trimToSize() sobre objetos Vectores y ArrayList que hayamos creado con más tamaño del necesario, si no indicamos empiezan en 10 y se van duplicando según aumentamos los objetos que metemos dentro.

Comparaciones entre Strings, primero las constantes, para evitar el nullPointerException:

CONSTANTE.equals(variable);

No concatenar Strings con el +, ya que esto crea un String Buffer por cada + usado y lo destruye con cada más

String Str_mensaje = Str_cad1 + Str_cad2 + Str_cad3 + Str_cad4;

//MEJOR:

String Str_mensaje = null;

StringBuffer Sbf_bufMensaje = new StringBuffer();

Sbf_bufMensaje.append(Str_cad1);

Sbf_bufMensaje.append(Str_cad2);

Sbf_bufMensaje.append(Str_cad3);

Sbf_bufMensaje.append(Str_cad4);

Str_mensaje = Sbf_bufMensaje.toString();

Cuando dejamos de usar un objeto o variable, asignarle un null, para que el recolector de basura lo interprete como tal y lo borre. Para los collection, utilizar el clear cuando dejemos de usarlo.

Si un bucle puede terminar de forma descontrolada, es mejor poner la condición y no recorrer un objeto, (típica búsqueda de un valor en una lista)

Las excepciones son muy costosas, y no deben utilizarse para hacer un flujo lógico, sino para controlar casos excepcionales.

En inglés podeís encontrar en esta página, una gran cantidad de Buenas prácticas