パンくず
リファクタリング-プログラマーの体質改善テクニック
メソッドの構成
一時変数の分割
内容
リファクタリング名
一時変数の分割
適用ケース要約
ループ変数でも計算結果の蓄積用の変数でもないのに、複数回代入される一時変数がある。
適用内容要約
代入ごとに別々の一時変数を用意する。
適用詳細
ループでの使用などを除き、同じ一時変数に対して複数回値を設定することは
変数の責務をあいまいにして可読性が下がったり、追加・修正時に影響を与える範囲が広くなります。
これらの値の設定を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にしました。