def self.method_A
a = xx
b = xx
c = xx
d = xx
complex_computing1(a, b, c, d)
end
def self.method_B
a = xx
b = xx
c = xx
d = xx
complex_computing2(a, b, c, d)
end
我需要重构上面的代码,所以我创建了一个名为method_C
def self.method_C
return {
a: xx,
b: xx,
c: xx,
d: xx,
}
end
所以,在method_A
中它将成为
def self.method_A
result = method_C
complex_computing1(result[:a], result[:b], result[:c], result[:d])
end
但我不认为这是最好的方式,有人能给我更多的建议吗?
答案 0 :(得分:0)
首先,我假设你已经抽象了你的实际代码 - 这使得很难建议实际的工作重构,因为不清楚什么是常量以及额外计算的结果是什么。为了我的建议,我假设xx
表示的所有值都是方法调用的结果,因此不能像Shimu建议的那样简单地变成常量。
在这种情况下,可能最简洁的重构方法是:
def self.method_A
complex_computing1(*method_C.values_at(:a, :b, :c, :d))
end
如果它们的键没有真正的逻辑,你可以利用在Ruby中排序哈希的事实(至少从Ruby 1.9开始)并执行此操作:
def self.method_A
complex_computing1(*method_C.values)
end
希望能回答你的问题。