Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

書籍 リファクタリング−プログラマーの体質改善 | 条件式の単純化 | 重複した条件の断片の統合

内容

リファクタリング

重複した条件の断片の統合

適用ケース要約

条件式のすべての分岐に同じコード片が含まれている

適用内容要約

その部分を式の外に出す

適用詳細

重複部分を分岐の外に出すことによってい分岐内は処理に差異がある部分のみになり
見通しがよくあんります。

サンプル

三角形,四角形の面積を求めます。
どちらの場合も同じフォーマットで結果メッセージを表示します。

サンプルコード

リファクタリング

def output_figure_area(angle_count,height,width)
  result=0
  if angle_count==3
    result=(height*width)/2
    output_message(result)
  elsif angle_count==4
    result=height*width
    output_message(result)
  else
    raise 'error'
  end
end

def output_message(result)
  puts "面積は#{result}です"
end

output_figure_area(3,5,10)
output_figure_area(4,5,10)

リファクタリング

# encoding: Shift_JIS

def output_figure_area(angle_count,height,width)
  result=0
  if angle_count==3
    result=(height*width)/2
  elsif angle_count==4
    result=height*width
  else
    raise 'error'
  end
  output_message(result)
end

def output_message(result)
  puts "面積は#{result}です"
end

output_figure_area(3,5,10)
output_figure_area(4,5,10)

出力(共通)

面積は25です
面積は50です