Acabo de escribir este código rubí, es muysimple, solo quiero cambiar el orden de operación dependiendo de una variable. Tengo la sensación de que lo que he escrito es más detallado de lo que debe ser, ¿alguien puede pensar en una forma más concisa de escribirlo?
if opts["--appears"]
if regex = opts["--matches"]
test = !response.text.match(regex)
else
test = !response.empty?
end
else
if regex = opts["--matches"]
test = response.text.match(regex)
else
test = response.empty?
end
end
Entonces, lo que creo que se puede optimizar es el bloque externo if, todo lo que cambia es que gira test
dentro !test
. Disculpas por lo que parece ser una pregunta simple, pero simplemente no puedo pensar en qué hacer para optimizarla.
Déjeme saber si cree que este es un mal foro para esta pregunta o si cree que debería ser movido a revisión de código. Estaba pensando que este podría ser el mejor lugar para hacerlo, pero no estaba seguro.
Gracias
Respuestas
2 para la respuesta № 1Una mejora simple es ejecutar la prueba primero y luego devolver el negativo si aparece ["- aparece"]:
test = if regex = opts["--matches"]
response.text.match(regex)
else
response.empty?
end
opts["--appears"] ? !test : test
0 para la respuesta № 2
Creo que esto simplificaría el código y mejoraría la legibilidad:
regex = opts["--matches"]
test =
if opts["--appears"]
regex ? !response.text.match(regex) : !response.empty?
else
regex ? response.text.match(regex) : response.empty?
end
o, si lo prefiere:
regex = opts["--matches"]
test =
case opts["--appears"]
when true
regex ? !response.text.match(regex) : !response.empty?
when false
regex ? response.text.match(regex) : response.empty?
end