gpt4 book ai didi

ruby - Rubocop 保护子句困境 - 不必要 if else VS 行太长保护子句

转载 作者:数据小太阳 更新时间:2023-10-29 07:03:05 26 4
gpt4 key购买 nike

我有一段代码,其中有一个带有保护子句的 raise 语句:

def validate_index index
# Change to SizeError
raise ArgumentError, "Size of index (#{index.size}) does not matches"\
"size of vector (#{size})" if size != index.size
end

在这一点上,rubocop 给出了罪行:

Style/MultilineIfModifier: Favor a normal if-statement over a modifier clause in a multiline statement.

我将我的代码修改为正常 if else case 如下:

def validate_index index
# Change to SizeError
if size != index.size
raise ArgumentError, "Size of index (#{index.size}) does not matches"\
"size of vector (#{size})"
end
end

但现在它给出了这样的冒犯:

Style/GuardClause: Use a guard clause instead of wrapping the code inside a conditional expression.

遇到这种情况怎么办?两者都在引发错误。还有其他选择吗?

最佳答案

Rubocop 希望你这样写:

def validate_index index
# Change to SizeError
return if size == index.size
raise ArgumentError, "Size of index (#{index.size}) does not matches"\
"size of vector (#{size})"
end

是否要走那条路取决于你。无论哪种方式,Rubocop 也建议:

def validate_index(index)

如果您按照原来的路线忽略了 Rubocop,您还应该考虑将 if != 更改为 unless:

unless size == index.size

关于ruby - Rubocop 保护子句困境 - 不必要 if else VS 行太长保护子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com