Tbpgr Blog

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

書籍 リファクタリング−プログラマーの体質改善 | メソッドの構成 | 問い合わせによる一時変数の置き換え

パンくず

リファクタリング-プログラマーの体質改善テクニック
メソッドの構成
問い合わせによる一時変数の置き換え

内容

リファクタリング

問い合わせによる一時変数の置き換え

適用ケース要約

一時変数を使って式の結果を保存している

適用内容要約

式をメソッドにする。一時変数のすべての参照箇所を式に置き換える。新しいメソッドは他のメソッドからも使える

適用詳細

一時変数は長いメソッドの温床になりやすい要素です。
一時変数に設定されている内容を、問い合わせメソッドに変更することで
メソッドを短くし、可読性を高めることが出来ます。
また問い合わせメソッドとして抽出された処理は再利用性が高まります。

置き換え時は、一時変数の右辺の内容をそのままメソッドに抽出し、
結果を返却するようにします。
修正後の右辺は新たに作成した問い合わせメソッドを呼び出します。

サンプル

2つのメッセージを墨付き括弧で強調する機能を実装します。

サンプルコード

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

リファクタリング

def temporary_variable_to_method_before(message1,message2)
  strong_message1 = "#{message1}"
  puts strong_message1
  strong_message2 = "#{message2}"
  puts strong_message2
end

temporary_variable_to_method_before "hoge","hoo"

リファクタリング

def temporary_variable_to_method_after(message1,message2)
  puts get_strong_message message1
  puts get_strong_message message2
end

private
def get_strong_message(message)
  return "#{message}"
end

temporary_variable_to_method_after "hoge","hoo"

▼出力結果(共通)

【hoge】
【hoo】
解説

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

▼get_strong_message(message)
引数messageの値に墨付き括弧をつけて出力する機能です。
元は、temporary_variable_to_method_beforeの中で一時変数に設定される内容として
message1,message2それぞれに対して二度呼び出されていました。
この機能を問い合わせメソッドにしたことで、一時変数をなくし
同じ機能をmessage1・message2の両方で流用しています。