Ruby on rails 重构以下ruby代码的方法是什么

Ruby on rails 重构以下ruby代码的方法是什么,ruby-on-rails,ruby,Ruby On Rails,Ruby,我需要重构上面的代码,所以我创建了一个名为method_C的方法 因此,在方法A中 它将成为 def self.method_C return { a: xx, b: xx, c: xx, d: xx, } end 但我认为这不是最好的办法,有人能给我更多的建议吗 首先,我假设您已经抽象了实际的代码——这使得很难建议实际的工作重构,因为不清楚什么是常量以及额外计算的结果是什么。出于我的建议,我假设所有由xx表示的值都是方法调用的结果,因此不能像Shimu

我需要重构上面的代码,所以我创建了一个名为method_C的方法

因此,在方法A中

它将成为

def self.method_C
  return {
    a: xx,
    b: xx,
    c: xx,
    d: xx,
  }
end

但我认为这不是最好的办法,有人能给我更多的建议吗

首先,我假设您已经抽象了实际的代码——这使得很难建议实际的工作重构,因为不清楚什么是常量以及额外计算的结果是什么。出于我的建议,我假设所有由xx表示的值都是方法调用的结果,因此不能像Shimu建议的那样简单地转换为常量

在这种情况下,最干净的重构方式可能是:

def self.method_A
  result = method_C
  complex_computing1(result[:a], result[:b], result[:c], result[:d])
end
如果它们的键没有真正的逻辑,那么您可以利用至少从Ruby 1.9开始在Ruby中对哈希进行排序的事实,并执行以下操作:

def self.method_A
  complex_computing1(*method_C.values_at(:a, :b, :c, :d))
end

希望这能回答你的问题。

你可以在这个类中创建一个常数,在没有关于什么是a、b、c、d的全部细节,什么是复杂的计算,如果a、b、c、d在mA和mB中是相同的?如果它们是复杂的,那么计算1和2只需要相同的值,但对它们进行不同的运算吗?等等,真的很难弄清楚重构什么和如何重构。谢谢你的建议。由于原始代码非常冗长和不清楚,我对实际代码进行了抽象。
def self.method_A
  complex_computing1(*method_C.values_at(:a, :b, :c, :d))
end
def self.method_A
  complex_computing1(*method_C.values)
end