Prácticas de Programación
Proporcionar Acceso a Variables de Ejemplar y de Clase
No debemos hacer públicas ninguna variable de ejemplar o de clase sin una buena razón.
Frecuentemente las variables de ejemplar no necesitan configurarse explícitamente - porque
normalmente esto sucede como un efecto lateral de llamadas a métodos.
Un ejemplo de variables de ejemplar públicas apropiadas es el cadso donde la clase
esencialmente es una estructura de datos, sin comportamiento. En otras palabras, si tuvieramos
una estructura en lugar de una clase (si Java soportara estructuras), entonces seriá apropiado
hacer públicas las variables de ejemplar.
Referenciar Variables de Clase y Métodos
Debemos evitar usar un objeto para acceder a variables de ejemplar (estáticas) o métodos. En su
lugar debemos usar la clase. Por ejemplo:
classMethod(); //OK
AClass.classMethod(); //OK
anObject.classMethod(); //AVOID!
Constantes
Las constantes numéricas (literales) no deberían codificarse directamente, excepto -1, 0, y 1,
que pueden aparecer en un bucle for como valores de contador.
Asignaciones de Variables
Debemos evitar asignar varias variables al mismo valor en una sóla sentencia. Es díficil de
leer, por ejemplo:
fooBar.fChar = barFoo.lchar = 'c'; // AVOID!
No debemos usar el operador de asignación en lugares donde pueda ser fácilmente confundible
con el operador de igualdad, por ejemplo:
if (c++ = d++) { // AVOID! (Java disallows)
...
}
Debería escribirse como:
if ((c++ = d++) != 0) {
...
}
No debemos usar asignaciones embebidas en un intento de mejorar el rendimiento de ejecución. Ese
es el trabajo del compilador. Por ejemplo:
d = (a = b + c) + r; // AVOID!
Debería escribirse como:
a = b + c;
d = a + r;
Prácticas Misceláneas
Paréntesis
Generalmente es una buena idea usar paréntesis para liberar expresiones que incluyen mézclas
de operadores para evitar problemas de precedencia de operadores. Incluso si la precedencia del
operador parece clara para nosotros podría no ser así para otros -- no deberíamos asumir que
otros programadores conecen la precedencia tan bién como nosotros.
if (a == b && c == d) // AVOID!
if ((a == b) && (c == d)) // USE
Valores de Retorno
Debemos intentar hacer que la estructura de nuestro programa corresponda con nuesta intención.
Por ejemplo:
if ( booleanExpression) {
return true;
} else {
return false;
}
debería escribirse como:
return booleanExpression;
De forma similar,
if (condition) {
return x;
}
return y;
debería escribirse como:
return (condition ? x : y);
Expresiones antes del ‘?’ en el Operador Condicional
Si una expresión que contiene un operador binario aparece antes del '?' en el operador
terciario ?:, debería ponerse entre paréntesis, por ejemplo:
(x >= 0) ? x : -x;
Comentarios Especiales
Debemos usar XXX en un comentario para marcar algo que es fraudulenteo pero funciona; y FIXME
para marcar algo que es fraudulento y no funciona.