LoginSignup
0
0

More than 5 years have passed since last update.

アルゴリズム変更(Substitute Algorithm)

Last updated at Posted at 2019-03-19

image.png

1つずつリファクタリング技法まとめ
個人的に簡単かつ取り入れ易いと思うものから

目的

すぐ引き出せるようにする

基本作業サイクル

  • システムを動かして仕様を精査
  • テストメソッドを作成
  • テストの失敗を確認
  • テストの成功を確認
  • 小さい変更、随時テスト実行(パターン追加失敗確認->成功確認)
  • 最後テスト実行
  • 最後動作確認

引数オブジェクトの導入(Introduce Parameter Object)とは

分かりやすいアルゴリズムでメソッドの中身を書き換えること

ポイント

  • テストに対して新しいアルゴリズムを実行し、結果が同じになることを確認する
  • 実装時は新旧両方の結果に着目し、テストケースと失敗の関係性を理解する

def members(people) 
  members = [] 
  people.each do |person|
    if (person == 'Luffy')
    end
    if (person == 'Zoro')
    end
    if (person == 'Sanji')
    end
  end
  members
end

   ↓

def members(people) 
  people.select do |person|
    %w(Luffy Zoro Sanji).include? person
  end
end

書籍情報

Jay Fields (著), Shane Harvie (著), Martin Fowler (著), Kent Beck (著),
長尾 高弘(訳), リファクタリング:Rubyエディション
https://amzn.to/2VlyWML

雑感

単純なアルゴリズムだけにまず抽出して、書き換え時の考慮範囲を限定的にする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0