Estoy trabajando en un proyecto y en el código agregué algunas declaraciones if. Luego me dijeron que puedo hacerlo en línea y de manera más eficiente. La forma en que lo hice funciona perfectamente, pero necesito refactorizar para que sea aceptado. ¿Podrías ayudarme? He probado el operador ternario como puedes ver en los ejemplos a continuación, pero aún no es tan corto
Suponiendo que tenemos dos matrices arr1 y arr2 y se implementa el siguiente código para verificar si sus longitudes.
const hasValArr1 = ():boolean => return arr1.length > 0
const hasValArr2 = ():boolean => return arr2.length > 0
Ahora la parte interesante si las declaraciones
const isEmpty():boolean => { if (!hasValArr1() && !hasValArr2()) return false else if (hasValArr1() && hasValArr2()) return true else if (!hasValArr1() && hasValArr2()) return true else if (hasValArr1() && !hasValArr2()) return true }utilizando el operador ternario
(!hasValArr1() && !hasValArr2()) ? false :(hasValArr1() && hasValArr2()) ? true :(!hasValArr1() && hasValArr2()) ? true :(hasValArr1() && !hasValArr2()) && true¿Cómo harías para escribir esto de una manera más legible y eficiente? ¡Gracias por adelantado!
La implementación no coincide con el nombre del método. El nombre del método es isEmpty pero devuelve false si ambas matrices no tienen un valor: if (!hasValArr1() && !hasValArr2()) return false
Entonces el nombre debería ser: hasAnyValue o doArraysHaveAnyValue o algo por el estilo.
En cuanto a la simplificación, simplemente puede usar || :
const doArraysHaveAnyValue(): boolean => { return hasValArr1() || hasValArr2(); } La razón por la que esto es mejor es porque es más fácil de leer y da preferencia a usar "positivo" en lugar de negación con !
yo creo que puedes
сonst isEmpty():boolean => { if (!hasValArr1() && !hasValArr2()) return false return true; }o:
const isEmpty():boolean => { return (!hasValArr1() && !hasValArr2()) }o si desea verificar si ambas matrices tienen valores:
const HasArraysData():boolean => { return (hasValArr1() && hasValArr2()) }y se vuelve más simple leer el código:
if (HasArraysData)o:
if (!HasArraysData)Sin cuestionar la premisa de la pregunta, puede escribir:
const isEmpty():boolean => { return hasValArr1() || hasValArr2() }