Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

書籍 リファクタリング−プログラマーの体質改善 | 条件式の単純化 | 条件記述の統合

内容

リファクタリング

条件記述の統合

適用ケース要約

同じ結果になる条件テストが複数並んでいる

適用内容要約

それらを1つの条件式にまとめ、メソッドとして抽出する

適用詳細

分岐の見通しを良くする意味でも、同じ値を返却する条件が並んでいたら一か所にまとめること。

サンプル

divタグを出力する機能を実装します。
値に大なり小なり(><)を含んでいた場合は「<」「>」
に変換します。

サンプルコード

リファクタリング

# encoding: Shift_JIS

def output_div(value)
  value = value.gsub("<","&lt;")  if value.include?("<")
  value = value.gsub(">","&gt;")  if value.include?(">")
  return "<div>",value,"</div>"
end

puts output_div ">test<"

リファクタリング

# encoding: Shift_JIS

def output_div(value)
  value = escape_html value
  return "<div>",value,"</div>"
end

def escape_html(value)
  value = value.gsub("<","&lt;")  if value.include?("<")
  value = value.gsub(">","&gt;")  if value.include?(">")
  return value
end

puts output_div ">test<"

出力(共通)

<div>
&gt;test&lt;
</div>