Un colega mío y yo tuvimos una conversación sobre el siguiente tema de mejores prácticas.
La mayoría de las funciones/métodos comienzan con la comprobación de algunos parámetros.Estilo de si: anidar o no anidar
Defiendo el siguiente estilo, que evita la anidación.
if (parameter one is ugly) return ERROR;
if (parameter two is nonsense || it is raining) return ERROR;
// do the useful stuff
return result;
Él, que proviene de un entorno de programación más funcional/lógico, prefiere la siguiente, ya que reduce el número de puntos de salida de la función.
if (parameter one is ok) {
if (parameter two is ok && the sun is shining) {
// do the useful stuff
return result
}
}
return ERROR;
¿Cuál prefieres y por qué?
El uso de las cláusulas Guard es aconsejable. Verifique la regla de refactorización de Fowlers: http://www.refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html - transforma su segundo (anidado) en el primero (cláusula de guardia). – Konerak