如何使用 || 减少 'complexity too high' - 或运算符
How to reduce 'complexity too high' with || - or operator
我有一个简单的方法,可以计算大学课程表中的总课时,以用于系中的其他模块(学生可以参加多个系)
def hours_total
@hours_total = user.open_departments.each_with_object({}) do |department, h|
h[department] = (sports_hours[department] || 0) +
(science_hours[department] || 0) +
(intership_sum[department] || 0) +
(art[department] || 0) -
((obligatory_topics[department] || 0) +
(base[department] || 0))
end
end
我该如何解决Cyclomatic complexity for hours_total is too high.
?我不知道如何不重复 || 0
因为在某些部门 sports_hours[department]
可以是 nil
值
我要采取的第一步:
def hours_total
@hours_total = user.open_departments.each_with_object({}) do |department, h|
positive = [sport_hours, science_hours, internship_sum, art].sum do |pos_h|
pos_h[department].to_i
end
negative = [obligatory_topics, base].sum do |neg_h|
neg_h[department].to_i
end
h[department] = positive - negative
end
end
注意: 如果您的小时数可以是浮点值,请将 to_i
替换为 to_f
。
现在,如果您和您的 Rubocop 都同意,我可能会离开。如果你们中有人不高兴,positive
和 negative
应该被提取到一个方法中。
我有一个简单的方法,可以计算大学课程表中的总课时,以用于系中的其他模块(学生可以参加多个系)
def hours_total
@hours_total = user.open_departments.each_with_object({}) do |department, h|
h[department] = (sports_hours[department] || 0) +
(science_hours[department] || 0) +
(intership_sum[department] || 0) +
(art[department] || 0) -
((obligatory_topics[department] || 0) +
(base[department] || 0))
end
end
我该如何解决Cyclomatic complexity for hours_total is too high.
?我不知道如何不重复 || 0
因为在某些部门 sports_hours[department]
可以是 nil
值
我要采取的第一步:
def hours_total
@hours_total = user.open_departments.each_with_object({}) do |department, h|
positive = [sport_hours, science_hours, internship_sum, art].sum do |pos_h|
pos_h[department].to_i
end
negative = [obligatory_topics, base].sum do |neg_h|
neg_h[department].to_i
end
h[department] = positive - negative
end
end
注意: 如果您的小时数可以是浮点值,请将 to_i
替换为 to_f
。
现在,如果您和您的 Rubocop 都同意,我可能会离开。如果你们中有人不高兴,positive
和 negative
应该被提取到一个方法中。