我已经使用Reek最近重构我的代码和气味中的一个,DuplicateMethodCall,被称为上数组和散列查找,如array[1]
或hash[:key]
时称为多次。如果多个阵列/哈希查询被存储在一个变量
所以我在想,如果有多个数组或哈希查找是如此昂贵,我们应该在一个变量来存储它们,而不是直接调用它们,这是每个人都从我的经验呢。
我会毫不犹豫地存储多个对象方法调用(尤其是如果它是一个DB调用)在一个变量,但这样做对于数组和哈希查找感觉就像矫枉过正。
例如,我会得到一个警告,对这段代码:
def sort_params
return [] if params[:reference_letter_section].nil?
params[:reference_letter_section].map.with_index(1) do |id, index|
{ id: id, position: index }
end
end
,但我觉得在自己的变量存储params[:reference_letter_section]
太多
代码质量的工具应经常采取一粒盐。当性能不是问题时,可读性很重要。但用你的判断来决定哪种方式更好。这些工具只是告诉你在哪里看。 – ndn
呀完全与它@ndn同意,但我不知道有多少,它会提高性能,这就是为什么我问这个位置 –
“我不知道有多少,它会提高性能” - 你可以随时_measure_那。 –