2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

メソッドのインライン化(Inline Method)

Last updated at Posted at 2019-03-02

image.png

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

目的

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

基本作業サイクル

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

メソッドのインライン化(Inline Method)

呼び出し先のメソッドを呼び出し元に組み込み、呼び出し先のメソッドを削除すること
メソッドの抽出の逆

ポイント

  • 実際の処理と、抽出されているメソッド名が同じくらい分かりやすい
  • メソッドオブジェクトに持たせたいふるまいを実装しているメソッド内の呼び出しをインライン化することが多い
  • メソッドがポリモーフィックな場合はできない(オーバーライドメソッドを消す事になるため)

def evaluation
  output ? 'Success' : 'Failed'
end

def output
  @wrote >= 3
end

   ↓

def evaluation
  @wrote >= 3 ? 'Success' : 'Failed'
end

書籍情報

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

雑感

分かり易さの基準によって切り出すべきかインライン化すべきの判断は違いそう
コンテキストとなる表現に近いか次第な感じがする
基本的には抽出のステップあってのインライン化の検討なはず

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?