パンくず
リファクタリング-プログラマーの体質改善テクニック
メソッドの構成
パラメーターへの代入の除去
内容
リファクタリング名
パラメーターへの代入の除去
適用ケース要約
コードが引数に代入を行っている。
適用内容要約
代わりに一時変数を使う。
適用詳細
Java・Rubyともにメソッドの引数は値渡しです。
そのためメソッドの引数に指定した値の中身を変更する場合、オブジェクトの参照を変更しても
呼び元へは反映されません。また、可読性の面からも引数の内容を変更して利用するのは好ましくありません。
そのため、引数の値を変更している箇所は一時変数に置き換えることが望ましいです。
サンプル
指定した日付の翌日を表示する機能を実装します。
日付は引数で指定します。
サンプルコード
▼リファクタリング前
require "date" def assignments_parameters_before(date) next_day = get_next_day(date) puts next_day end def get_next_day(date) date = date + 1 return date end assignments_parameters_before Date.today
▼リファクタリング後
require "date" def assignments_parameters_after(date) next_day = get_next_day(date) puts next_day end def get_next_day(date) next_day = date + 1 return next_day end assignments_parameters_after Date.today
▼出力結果(共通)
※実行した日は2012/03/21
2012-03-22