【发布时间】:2017-04-29 03:41:46
【问题描述】:
我有以下代码,对于我想要它做的事情来说似乎很冗长:
if @initial_that.present?
@that = @initial_that
get_talk_api_response
else
get_talk_api_response
end
看起来我可以让它变干,但不确定如何。
【问题讨论】:
标签: ruby-on-rails ruby dry
我有以下代码,对于我想要它做的事情来说似乎很冗长:
if @initial_that.present?
@that = @initial_that
get_talk_api_response
else
get_talk_api_response
end
看起来我可以让它变干,但不确定如何。
【问题讨论】:
标签: ruby-on-rails ruby dry
我确定此重构有一个计算机科学名称,但您在两个分支中都调用 get_talk_api_response,因此请将其放在条件之外:
if @initial_that.present?
@that = @initial_that
end
get_talk_api_response
然后根据热门评论让它看起来更像红宝石:
@that = @initial_that if @initial_that.present?
get_talk_api_response
【讨论】:
@that = @initial_that if @initial_that.present?
【讨论】:
@that 中当前的任何值。要使用presence,我想你想做@that = @initial_that.presence || @that。
@that = @initial_that.presence || @that?
||= 并不合适,因为一旦设置了@that,它就不会关心@initial_that.presence 返回什么。