如何重构 Ruby 中的长行
How to refactor a long line in Ruby
我得到了这段代码,它提高了行长度限制超过了 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
超出了行的长度,因此解决方案对我来说不可行。
所以我作为初学者的问题是我应该如何考虑重构这种情况?
简单地将 if 语句分成多行怎么样?
if current_user.pending_organisation_id
return organisation_path(current_user.pending_organisation_id)
end
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)
我假设您不想通过调整 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
我得到了这段代码,它提高了行长度限制超过了 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
超出了行的长度,因此解决方案对我来说不可行。
所以我作为初学者的问题是我应该如何考虑重构这种情况?
简单地将 if 语句分成多行怎么样?
if current_user.pending_organisation_id
return organisation_path(current_user.pending_organisation_id)
end
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)
我假设您不想通过调整 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