如何在ruby中重构一个长方法

时间:2018-01-26 04:05:07

标签: ruby coding-style

下面是我编码风格的一个例子。有时我最终得到50行方法。

def make_juice
  wash_fruits()
  cut_fruits()

  while(true) do
    if electicity_available?
      turn_on_lights()
      break
    else
      pay_electricity_bill()
      sleep(60)
    end
  end

  mix_fruits_in_mixer()
  add_sugar()
end

# ---------- function definitions ----------

def wash_fruits
  # ...
end
def cut_fruits
  # ...
end
def electricity_avalable?
  # return true  if available
end
def turn_on_lights
  # turn on 
end
def pay_electricity_bill
  # pay
end
def create_juice
  # steps for creating juice
end
def add_sugar
  # steps for adding sugar
end

编写长方法并不是ruby惯例,我想知道重构ruby程序的标准方法。我试着重构代码并得到以下结果:

def wash_fruits
  # ...
  cut_fruits
end

def cut_fruits
  # ...
  turn_on_lights
end

def turn_on_lights
  while(true) do
    if electricity_avalable?
      turn_on_lights
      break
    else
      sleep 1.hour
    end
  end
  mix_fruits_in_mixer
end

def mix_fruits_in_mixer
  # ...
  add_sugar
end

def turn_on_lights
  # ...
end

def add_sugar
  # ...
  # ... program exits
end

第二种风格的方法名称不是很有意义。这是重构程序的正确方法吗?

1 个答案:

答案 0 :(得分:1)

我倾向于写下以下 1

def make_juice
  wash_fruits
  cut_fruits
  turn_on_lights
  mix_fruits_in_mixer
  add_sugar
end

def turn_on_lights
  until electricity_available?
    pay_electricity_bill()
    sleep(60)
  end
  flip_switch_on
end

1逻辑表明,洗涤和切割可能在黑暗中进行,人们可能需要多次支付电费以获得电力。 ¯\ _(ツ)_ /¯