“Effective Java: Programming Language Guide”, Joshua Bloch, Publisher: Addison Wesley, First Edition June 01, 2001 (RESUMEN)

<Capitulo 2>

– Crea métodos estáticos en lugar del constructor.

V: Te aseguras el singleton, no creas objetos, puedes devolver cualquier objeto.

D: una clase sin métodos públicos o privados no puede ser una subclase, no son

distinguibles de otros métodos estáticos.

– La clase singleton con el atributo como static final y el constructor privado. Un método getInstance()

que devuelva el atributo, siempre el mismo, no un objeto nuevo.

– Si quieres una clase abstrapta que no se pueda instanciar, pon un constructor privado.

– Evitar la creación de objetos duplicados.

String s = new String(«silly»); // DON’T DO THIS!

String s = «No longer silly»; // YES

– Evita métodos finally que terminen cualquier cosa.

 

<Capitulo 3>

– Sobrescribe siempre el método toString()

 

<Capitulo 4>

– (12) Minimiza el acceso a las clases y a sus métodos (public, private, protected)

– (13) Favorece las clases inmutables, aquellas cuyos casos no pueden ser modificados:

– no generes métodos que modifiquen el objeto.

– asegurate de que no halla métodos que puedan ser sobrescritos, por subclases.

– has todos los campos final, private

– (14) Favorece la composición sobre la herencia

– (15) Diseña y documenta la herencia o no la permitas.

– (16) Mejor las Interfaces que las clases Abstractas.

– (17) Usa las Interfaces solo para definir tipos.

– (18) Favorece lo estático sobre lo no estático.

 

<Capitulo 6: Métodos>

– (23) Comprueba que los parámetros son validos.

– (25) elige los nombres de los métodos con cuidado. En los parámetros, interfaces sobre clases

– (28) Escribe la documentación de lo que estas haciendo.

 

<Capitulo 7: Programación en general>

– (29) Minimiza el ámbito de las variables locales.

– Declararlas como si fuese la primera vez que las usas,

– Cerca de la declaración de una variable tiene que estar su inicialización.

– (30) Conoce y usa las librerías.

– (32) Evita String donde otros tipos son más apropiados. (enum, stringbuffer…)

– (33) Cuidado con el rendimiento de la concatenación de cadenas, usa StringBuffer.

– (34) Refiere a los objetos por sus interfaces: List subscribers = new ArrayList();

List subscribers = new Vector();

– (35) Mejor interfaces que reflexión. Reflexión: acceso programado a clases que se están ejecutando

– (38) Utiliza la convención de nombres establecida.

 

<Capitulo 8: Excepciones>

– (39) Usa las excepciones para condiciones especiales.

– (40) Usa el control de excepciones para condiciones recuperables y las excepciones run-time para

errores de programación.

– (41) Evita el uso innecesario del control de excepciones.

– (42) Favorece el uso de excepciones estandard.

– (43) Lanza las excepciones apropiadas para la abstracción.

– (44) Documenta las excepciones lanzadas en cada método

– (45) Incluye capturas de fallo de la información en los mensajes detallados.

– (46) El fallo en la invocación de un método debe dejar el objeto en el mismo estado en el que se

encontraba antes de la llamada.

– (47) No ignores las excepciones. No dejes una excepción sin tratar

 

<Capitulo 9: Hilos>

– (48) Sincroniza el acceso para compartir los datos modificables.

– (49) Evita la excesiva sincronización.

– (50) Nunca invoques un wait fuera de un bucle

– (51) No dependas del programador de tareas.

– (52) Documenta los hilos de seguridad

– (53) Evita la agrupación de hilos

 

<Capitulo 10: Serialización>

– (55) Considera personalizar la serialización, no aceptes la que viene por defecto.

“Effective Java: Programming Language Guide”, Joshua Bloch, Publisher: Addison Wesley, First Edition June 01, 2001 (RESUMEN)