Tbpgr Blog

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

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

内容

リファクタリング

一時変数の分割

適用ケース要約

ループ変数でも計算結果の蓄積用の変数でもないのに、複数回代入される一時変数がある。

適用内容要約

代入ごとに別々の一時変数を用意する。

適用詳細

ループでの使用などを除き、同じ一時変数に対して複数回値を設定することは
変数の責務をあいまいにして可読性が下がったり、追加・修正時に影響を与える範囲が広くなります。
これらの値の設定を1度だけにするために、別々の一時変数に分割を行います。

サンプル

初期化メッセージ、本メッセージ、終了メッセージを表示する機能を想定します。
「開始しました」
「****」※****は引数で与えた任意の文字列
「終了しました」
という内容を出力します。

サンプルコード

リファクタリング

def split_temporary_variable_before(message)
  output_message = "開始しました"
  puts output_message

  puts message

  output_message = "終了しました"
  puts output_message
end

split_temporary_variable_before "hoge"

リファクタリング

def split_temporary_variable_after(message)
  initialize_message = "開始しました"
  puts initialize_message

  puts message

  finalize_message = "終了しました"
  puts finalize_message
end

split_temporary_variable_after "hoge"

▼出力結果(共通)

開始しました
hoge
終了しました
解説

リファクタリング後の一時変数について。

▼initialize_message
開始、終了共用で使われていたoutput_messageのうち、
開始のメッセージはinitialize_messageにしました。

▼finalize_message
開始、終了共用で使われていたoutput_messageのうち、
終了のメッセージはfinalize_messageにしました。