我是否滥用"救援"进行零检查?

Eri*_*edo 9 ruby exception-handling ruby-on-rails

rescue用于所有事情,而不仅仅是用于"拯救"例外.我的意思是,我只是喜欢它让我验证并仔细检查数据的方式.

举个例子,假设我有一个Item可能有或没有的模型User.然后,当我想获得我写的项目的所有者名称时:

item.user.name rescue ""
Run Code Online (Sandbox Code Playgroud)

而不是像

item.user.nil? ? "" : item.user.name
Run Code Online (Sandbox Code Playgroud)

它也是同样的想法,因为nil.name触发了我拯救的异常"",但我不确定这是一个好习惯.它制作了我想要的东西,它用更少的代码制作它,但是......我不知道,rescue这里和那里的所有单词都让我感到不安全.

这是一种不好的做法,还是滥用rescue关键字有效?

the*_*eIV 7

我认为你有点滥用救援,虽然在Rails中,有一个特定的方法来解决这些问题:try.文档

在你的情况下,item.user.try(:name)可能是一个更好的方法.