Tbpgr Blog

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

書籍 リファクタリング−プログラマーの体質改善 | 条件式の単純化 | 制御フラグの削除

内容

リファクタリング

制御フラグの削除

適用ケース要約

一連の論理式で使われる制御フラグとして機能している変数がある

適用内容要約

代わりにbreakやreturnを使う。

適用詳細

分岐にフラグを利用していた場合、breakやreturnで終了することを検討する。

サンプル

メッセージをランダムな回数出力する機能を実装します。

サンプルコード

リファクタリング

# encoding: Shift_JIS

def random_output(message)
  flag=true
  count=0
  while flag
    count+=1
    puts "#{count}回目:#{message}"
    flag = false if rand(10) > 7
  end
end

random_output("hoge")
random_output("hoo")

リファクタリング

# encoding: Shift_JIS

def random_output(message)
  flag=true
  count=0
  loop do
    count+=1
    puts "#{count}回目:#{message}"
    break if rand(10) > 7
  end
end

random_output("hoge")
random_output("hoo")

出力(共通)※出力内容はランダムに回数が変わる

1回目:hoge
2回目:hoge
1回目:hoo
2回目:hoo
3回目:hoo
4回目:hoo
5回目:hoo
6回目:hoo
7回目:hoo
8回目:hoo
9回目:hoo