パンくず
リファクタリング-プログラマーの体質改善テクニック
メソッド呼び出しの単純化
明示的なメソッド群による引数の置き換え
内容
適用ケース要約
引数の特定の値によって異なるコードが実行されるメソッドがある
適用内容要約
引数の値に対応する別々のメソッドを作成する
適用詳細
メソッドのパラメータ化の反対にあたるリファクタリング。
それぞれ別々の意味を持つパラメータがひとつにメソッドで設定されている場合、
別々のメソッドに分割することによってインターフェースの持つ意味が明確になります。
サンプル
引数の値によってJavaかRubyのHello Worldを出力する機能を実装します。
サンプルコード
# encoding: Shift_JIS JAVA="Java" RUBY="Ruby" HELLO_WORLD="hello world" def get_hello_world(language) return "System.out.println(\"#{HELLO_WORLD}\")" if language==JAVA return "puts \"#{HELLO_WORLD}\"" if language==RUBY return "uncorrect language" end puts get_hello_world(JAVA) puts "-------------------------" puts get_hello_world(RUBY)
# encoding: Shift_JIS HELLO_WORLD="hello world" def get_java_hello_world() "System.out.println(\"#{HELLO_WORLD}\")" end def get_ruby_hello_world() "puts \"#{HELLO_WORLD}\"" end puts get_java_hello_world puts "-------------------------" puts get_ruby_hello_world
出力(共通)
System.out.println("hello world") ------------------------- puts "hello world"