Tbpgr Blog

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

書籍 リファクタリング−プログラマーの体質改善 | 条件式の単純化 | ガード節による入れ子条件記述の置き換え

パンくず

リファクタリング-プログラマーの体質改善テクニック
条件式の単純化
ガード節による入れ子条件記述の置き換え

内容

リファクタリング

ガード節による入れ子条件記述の置き換え

適用ケース要約

正常な実行経路がはっきりしないような条件分岐を持つメソッドがある

適用内容要約

すべての特殊条件をガード節で処理する

適用詳細

※「ガード節」:ある処理を続けるために真と評価しなければならない条件
正常系のみで分岐が発生する場合はif,elseif,elseなどが必要ですが、
ガード節の場合は条件を満たした場合はreturnします。

サンプル

文字列がnil、空文字の場合は"error"と出力し、
それ以外ならそのまま出力する機能を実装します。

サンプルコード

リファクタリング

# encoding: Shift_JIS

def not_null_nil_message(message)
  if message.nil?
    return "error"
  elsif message.empty?
    return "error"
  else
    return message
  end
end

puts not_null_nil_message(nil)
puts not_null_nil_message("")
puts not_null_nil_message("hoge")

リファクタリング

# encoding: Shift_JIS

def not_null_nil_message(message)
  return "error" if message.nil?
  return "error" if message.empty?
  return message
end

puts not_null_nil_message(nil)
puts not_null_nil_message("")
puts not_null_nil_message("hoge")

出力(共通)

error
error
hoge