Puede regresar y else pueden utilizar indistintamente en CFScript?
-
08-10-2019 - |
Pregunta
Me gustaría saber su opinión sobre el uso de declaraciones return
y else
indistintamente en CFScript. Yo generalmente uso la siguiente sintaxis:
if (something) {
// Do something
}
else {
// Do something else
}
Recientemente se me ocurrió que podía hacer esto en su lugar:
if (something) {
// Do something
return;
}
// Do something else
serían esas dos estilos producen un resultado final diferente? Me gusta no tener que envolver el código en una declaración else
. Mi pensamiento es que si la declaración if
evalúa verdadera y vuelve, no se ejecutará el código debajo de ella. Si no evalúa cierto, entonces el siguiente código se ejecutará independientemente de si está envuelto en una declaración else
o no.
¿Eso suena bien?
Solución
ColdFusion como la mayoría de idiomas ofrece muchas maneras de lograr lo mismo. La tarea del programador es elegir el correcto para la situación. Por supuesto "correcta" puede tener muchas interpretaciones, pero yo diría que la forma correcta es clara, concisa y escalable.
En este caso, no existen rendimiento real o "líneas de código" diferencias. El uso de un cambio de una rama completamente diferente del código no está claro sin embargo a los ojos, utilizando el estilo pronto regreso para rescatar de una función debido a las condiciones no válida es (de nuevo) de la OMI más claras. Tenga en cuenta los siguientes casos:
if (not isdefined("url.param1")) {
return;
}
if (not len(url.param1)) {
return;
}
if (not refind("[0-9]+", url.param1)) {
return;
}
doSomethingToValid(url.param1);
frente
if (isdefined("url.param1")) {
if (len(url.param1)) {
if (refind("[0-9]+", url.param1)) {
doSomethingToValid(url.param1);
}
}
}
En el primer caso puedo ver toda la validación que se aplicará en una lista y puedo conseguir que todo fuera del camino desde el principio que me permite centrarse en la sustancia real de la rutina. En el segundo caso he enterrado la parte sustancial de la rutina de profundidad en una sección anidada de IFS y cuando tengo que añadir otra regla para la validación de que la estructura del código sólo se hace más compleja.
Otros consejos
Las dos formas de escribir que devolverá los mismos resultados, pero para facilitar la lectura de la primera forma es preferido