8 SENTENCIAS
8.1 Sentencias simples
Cada línea debe contener como mucho una sentencia. Ejemplo:
argv++; // Correcto
argc--; // Correcto
argv++; argc--; // EVITAR!
8.2 Sentencias compuestas
Las sentencias compuestas son sentencias que contienen listas de sentencias encerradas entre llaves “{sentencias }”
- Las sentencias encerradas deben indentarse un nivel más que la sentencia compuesta.
- La llave de apertura se debe poner al final de la línea que comienza la sentencia compuesta; la llave de cierre debe empezar una nueva línea y ser indentada al mismo nivel que el principio de la sentencia compuesta.
- Las llaves se usan en todas las sentencias, incluso las simples, cuando forman parte de una estructura de control, como en las sentencias if-else o for. Esto hace más sencillo añadir sentencias sin incluir bugs accidentalmente por olvidar las llaves.
8.3 Sentencia return
Una sentencia return
con un valor no debe usar paréntesis a menos que hagan el valor de retorno más obvio de alguna manera. Ejemplo:
return;
return miDiscoDuro.size();
return (tamanyo ? tamanyo : tamanyoPorDefecto);
8.4 Sentencias if, if-else, if else-if else
La clase de sentenciasif-else
debe tener la siguiente forma:
if (condicion) {
sentencias;
}
if (condicion) {
sentencias;
} else {
sentencias;
}
if (condicion) {
sentencia;
} else if (condicion) {
sentencia;
} else {
sentencia;
}
Nota: Las sentencias if usan siempre llaves {}. Evitar la siguiente forma, propensa a errores:
if (condicion) //EVITAR! ESTO OMITE LAS LLAVES {}!
sentencia;
8.5 Sentencias for
Una sentencia for debe tener la siguiente forma:
for (inicializacion; condicion; actualizacion) {
sentencias;
}
Una sentencia for
vacía (una en la que todo el trabajo se hace en las cláusulas de inicialización, condición, y actualización) debe tener la siguiente forma:
for (inicializacion; condicion; actualizacion);
Al usar el operador coma en la cláusula de inicialización o actualización de una sentencia for
, evitar la complejidad de usar más de tres variables. Si se necesita, usar sentencias separadas antes de bucle for
(para la cláusula de inicialización) o al final del bucle (para la cláusula de actualización).
8.6 Sentencias while
Una sentencia while
debe tener la siguiente forma:
while (condicion) {
sentencias;
}
Una sentencia while vacía debe tener la siguiente forma:
while (condicion);
8.7 Sentencias do-while
do {
sentencias;
} wh## ile (condicion);
8.8 Sentencias witch
Una sentencia switch debe tener la siguiente forma:
switch (condicion) {
case ABC:
sentencias;
/* este caso se propaga */
case DEF:
sentencias;
break;
case XYZ:
sentencias;
break;
default:
sentencias;
break;
}
Cada vez que un caso se propaga (no incluye la sentencia break), añadir un comentario donde la sentencia break se encontraría normalmente. Esto se muestra en el ejemplo anterior con el comentario /*
este caso se propaga */
.
Cada sentencia switch
debe incluir un caso por defecto. El break en el caso por defecto es redundante, pero prevee que se propague por error si luego se añade otro caso.
8.9 Sentencias try-catch
Una sentencia try-catch
debe tener la siguiente forma:
try {
sentencias;
} catch (ExceptionClass e) {
sentencias;
}
Una sentenciatry-catch
puede ir seguida de un finally
, cuya ejecución se ejecutará independientemente de que el bloque try
se haya completado con éxito o no.
try {
sentencias;
} catch (ExceptionClass e) {
sentencias;
} finally {
sentencias;
}