Tbpgr Blog

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

書籍 リファクタリング−プログラマーの体質改善 | メソッド呼び出しの単純化 | 明示的なメソッド群による引数の置き換え

内容

リファクタリング

明示的なメソッド群による引数の置き換え

適用ケース要約

引数の特定の値によって異なるコードが実行されるメソッドがある

適用内容要約

引数の値に対応する別々のメソッドを作成する

適用詳細

メソッドのパラメータ化の反対にあたるリファクタリング
それぞれ別々の意味を持つパラメータがひとつにメソッドで設定されている場合、
別々のメソッドに分割することによってインターフェースの持つ意味が明確になります。

サンプル

引数の値によってJavaRubyHello 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"