A veces me encuentro con un código similar al siguiente ejemplo (lo que esta función hace exactamente está fuera del alcance de esta pregunta):
function doSomething(value) {
if (check1(value)) {
return -1;
}
else if (check2(value)) {
return value;
}
else {
return false;
}
}
Como se puede ver, if
, else if
y else
las declaraciones se utilizan en conjunción con el return
comunicado. Esto parece bastante intuitivo para un observador casual, pero creo que sería más elegante (desde la perspectiva de un desarrollador de software) eliminar los else
-s y simplificar el código de esta manera:
function doSomething(value) {
if (check1(value)) {
return -1;
}
if (check2(value)) {
return value;
}
return false;
}
Esto tiene sentido, ya que todo lo que sigue a una return
declaración (en el mismo ámbito) nunca se ejecutará, haciendo que el código anterior sea semánticamente igual al primer ejemplo.
¿Cuál de los anteriores se ajusta más a las buenas prácticas de codificación? ¿Hay algún inconveniente en cualquiera de los métodos con respecto a la legibilidad del código?
Editar: se ha hecho una sugerencia duplicada con esta pregunta como referencia. Creo que mi pregunta toca un tema diferente, ya que no estoy preguntando por evitar declaraciones duplicadas como se presenta en la otra pregunta. Ambas preguntas buscan reducir las repeticiones, aunque de maneras ligeramente diferentes.
-1
es un número, false
es un booleano y value
no se especifica aquí, por lo que podría ser cualquier tipo de objeto.
value
que en realidad sea un número entero. Si puede ser algo, eso es aún peor.
else
es menor, el mayor problema es que obviamente está devolviendo dos tipos de datos de una sola función, lo que hace que la API de la función sea impredecible.