Tbpgr Blog

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

書籍 リファクタリング−プログラマーの体質改善 | メソッドの構成 | 一時変数のインライン化

内容

リファクタリング

一時変数のインライン化

適用ケース要約

単純な式で1度だけ代入されている一時変数があり、その一時変数が他のリファクタリングの邪魔になっている

適用内容要約

その一時変数に対するすべての参照を取り除き、式にする

適用詳細

1度だけしか代入しないような一時変数をインライン化します。
以下のような状況で使用されます。
・「問い合わせによる一時変数の置き換え」の一部として
・「メソッドの抽出」などのリファクタリングの邪魔にならないように
・単独で使用

単独で利用する場合は、メソッドの戻り値に利用される場合などです。

サンプル

メッセージに墨付き括弧をつけて出力する機能を実装します。

サンプルコード

※便宜上変更前と変更後でメソッド名が変わってますが本来は同じです。
 サンプルコードはRubyで実装してあります

リファクタリング

def inline_temporary_variable_before(message)
  strong_message = "#{message}"
  puts strong_message
end

inline_temporary_variable_before "hoge"

リファクタリング

def inline_temporary_variable_after(message)
  puts "#{message}"
end

inline_temporary_variable_after "hoge"

▼出力結果(共通)

【hoge】
解説

リファクタリング後の各メソッドについて。

▼inline_temporary_variable_after(message)
引数messageの値に墨付き括弧をつけて出力する機能。
リファクタリング前は1度しか使用されないにも関わらず一時変数を使用している。
リファクタリング後には直接putsに値を渡している。