Tbpgr Blog

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

書籍 リファクタリング−プログラマーの体質改善 | メソッドの構成 | アルゴリズムの取替

内容

適用ケース要約

アルゴリズムをよりわかりやすいものに置き換えたい

適用内容要約

メソッドの本体を新たなアルゴリズムで置き換える。

適用詳細

よりよい実装方法を知った際に、アルゴリズムを取替ることでより良い
メソッドにすることができます。

サンプル

ある3人の生徒のテストの点数を表示する機能を実装します。
リファクタリング前はハッシュの存在を知らない状態で実装し、
その後ハッシュでの実装を知り、処理を変更したと想定します。

サンプルコード

リファクタリング

# encoding: Shift_JIS

def change_algorithm_before()
  name_list=["tanaka","sato","suzuki"]
  score_list=[80,78,20]
  (0..name_list.size-1).each {|count|
    print "#{name_list[count]}:#{score_list[count]}\n"
  }
end

change_algorithm_before

リファクタリング

# encoding: Shift_JIS

def change_algorithm_after()
  score_hash={"tanaka"=>80,"sato"=>78,"suzuki"=>20}
  score_hash.each {|key,value|
    print "#{key}:#{value}\n"
  }
end

change_algorithm_after

▼出力結果(共通)

tanaka:80点
sato:78点
suzuki:20点
解説

▼name_list、score_list
生徒と点数をリストで管理していたが、こころハッシュに変更することで
一つの変数で管理でき、ループからループカウンタを排除することが出来、
可読性が高くなりました。