Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions chapter06.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# 第6章
- リファクタリング作業の大半はコードを適切なパッケージに収めるメソッドの構成方法
- 長過ぎるメソッドが問題
- `メソッドの抽出` が中心
- ローカル変数をどのように扱うか
- `一時変数から問い合わせメソッドへ` で変数自体を除去していく
- 一時変数がいろんな使われ方をしている場合は `一時変数の分割` を先に実行して一時変数を置き換えやすくする
- 一時変数が複雑に絡み合っている場合は `メソッドからメソッドオブジェクトへ` を使って別クラスを導入しつつ、分岐を取り払うことを検討する
- `引数に対する代入の除去` も複雑度を下げる
- `メソッドのインライン化` は逆に独立したメソッド呼び出しを他のメソッドの一部に組み込む
- メソッド抽出を繰り返してみたものの、その中でメソッドとしての役割を果たさなくなったもの
- メソッド分解をした方がわかりやすい場合、 `アルゴリズム変更` も検討する
- コードの意味を通りやすくするために `名前付き引数の導入` を検討する。
- レシーバが煩雑になるようであれば逆に除去も考える
- デフォルト引数が使われなくなったら `使われていないデフォルト引数の除去` を行う

## メソッドの抽出( Extract Method )
- 1つにまとめられるコードブロックがある場合、それをメソッドにして目的を説明する名前をつける


27 changes: 27 additions & 0 deletions lib/extract_method.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# frozen_string_literal: true

def print_owing
outstanding = 0.0

print_banner

# 勘定を計算 ( calculate outstanding )
@orders.each do |order|
outstanding += order.amount
end

print_details outstanding
end

def print_banner
# バナーを出力( print banner )
puts "*************************"
puts "***** Customer Owes *****"
puts "*************************"
end

def print_details(outstanding)
# 詳細を表示 ( print details )
puts "name: #{@name}"
puts "amount: #{outstanding}"
end