Utilizo rescue
para todo, no solo para "rescatar" excepciones. Quiero decir, me encanta la manera en que me ahorra la verificación y la verificación doble de los datos.¿Estoy abusando de "rescate" por chequeos nulos?
Por ejemplo, digamos que tengo un modelo Item
que puede o no tener un User
. Entonces, cuando quiero conseguir el nombre del propietario del elemento escribo:
item.user.name rescue ""
en lugar de algo así como
item.user.nil? ? "" : item.user.name
Se hace la misma reflexión, ya que nil.name
gatillo de una excepción que rescato con ""
, pero no estoy muy seguro de que esto sea una buena práctica. Hace lo que quiero, y lo hace con menos código, pero ... No sé, todas esas palabras rescue
aquí y allá me hacen sentir inseguro.
¿Es una mala práctica o es abuso válido de la palabra clave rescue
?
Avdi Grimm argumenta que 'try' es un código olor http://devblog.avdi.org/2011/06/28/do-or-do-not-there-is-notry/ y http://devblog.avdi.org/2011/07/05/demeter-its-not-just-a-good-idea-its-the-law/, así que no es solo que la forma en que lo está haciendo es malo, sino que lo que estás tratando de hacer es malo. –
@AndrewGrimm alguna relación? – ybakos
@ybakos No lo sé, pero no somos [hermanos] (http://en.wikipedia.org/wiki/Brothers_Grimm). –