我得到的这段代码提高了线路长度限制超过了Rubocop的攻击:
return organisation_path(current_user.organisation) if current_user.organisation
return session[:previous_url] if session[:previous_url]
return organisation_path(current_user.pending_organisation_id) if current_user.pending_organisation_id
root_path
端
限制超过倒数第二行。我正在尝试重构这条线来解决Rubocop的进攻。
我的第一次尝试是将它分开:
return organisation_path(current_user.pending_organisation_id) if
current_user.pending_organisation_id
但它看起来并不可读。
我的第二次尝试是将此行分解为方法,因此我创建了此方法:
def pending_organization_path_for_current_user
return organisation_path(current_user.pending_organisation_id) if current_user.pending_organisation_id
end
但是方法名称太长了,因此行
pending_organization_path_for_current_user if current_user.pending_organisation_id
超过了线路长度,因此解决方案对我来说是不可行的。
所以我作为初学者的问题是我应该如何考虑重构这样的案例?
答案 0 :(得分:3)
如果简单地将if语句分成多行呢?
if current_user.pending_organisation_id
return organisation_path(current_user.pending_organisation_id)
end
答案 1 :(得分:2)
return organisation_path(current_user.organisation) if current_user.organisation
return session[:previous_url] if session[:previous_url]
return root_path unless current_user.pending_organisation_id
organisation_path(current_user.pending_organisation_id)
答案 2 :(得分:0)
我假设你不想调整Rubocop的设置来改变接受的风格,所以你可以像这样修复它:
if current_user.pending_organisation_id
organisation_path(current_user.pending_organisation_id)
end
然而,有时接受这是其中一次更容易 你比Rubocop更了解,所以只需添加一个例外:
# rubocop:disable Style/WhateverLineLengthIsCalled
return organisation_path(current_user.pending_organisation_id) if current_user.pending_organisation_id
# rubocop:enable Style/WhateverLineLengthIsCalled