Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

書籍 リファクタリング−プログラマーの体質改善 | メソッド呼び出しの単純化 | 条件判定による例外の置き換え

内容

リファクタリング

条件判定による例外の置き換え

適用ケース要約

例外を発生させているが、本来は呼び出し側が先にチェックすべきである

適用内容要約

最初に条件判定をするように呼び出し側を修正する

適用詳細

例外を利用すべきではない箇所で例外を使用している場合は条件判定に置き換えます。

サンプル

null文字チェックをしてメソッドを呼び出す機能を実装します。
リファクタリング前は例外判定をしています。
リファクタリング後は例外判定をなくし、条件判定を行います。

サンプルコード

リファクタリング

# encoding: Shift_JIS

def calee(str)
  execute(str)
  rescue
    puts 'rescue'
end

def execute(str)
  raise 'error' if str.nil?
  puts "execute"
end

calee("test")
calee(nil)

出力(リファクタリング前)

execute
rescue

リファクタリング

# encoding: Shift_JIS

def calee(str)
  execute(str) unless str.nil?
end

def execute(str)
  puts "execute"
end

calee("test")
calee(nil)

出力(リファクタリング後)

execute