Tbpgr Blog

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

書籍 リファクタリング−プログラマーの体質改善 | メソッドの構成 | メソッドのインライン化:Inline Method

内容

リファクタリング

メソッドのインライン化:Inline Method

適用ケース要約

メソッドの本体が名前と同じくらいわかりやすい

適用内容要約

メソッドの本体を呼び出し元の本体に組み込み、メソッドを削除する

適用詳細

過剰な間接化が行われた際に、メソッドとして抽出しなくても
その処理自体で意味が取れるものがある場合にメソッドのインライン化を行います。
また、その全段階としてメソッドの抽出基準を明確にするために
あえて各処理をインライン化して、そこから再抽出する際にも利用されます。

サンプル

メッセージを表示するだけの機能を想定します。

サンプルコード

※便宜上変更前と変更後でメソッド名が変わってますが本来は同じです。
 サンプルコードはRubyで実装してあります

リファクタリング

def inline_method_before(message)
  puts_message message
end

private
def puts_message(message)
  puts message
end

inline_method_before "hoge"

リファクタリング

# encoding: Shift_JIS

def inline_method_before(message)
  puts message
end

inline_method_before "hoge"

▼出力結果(共通)

hoge
解説

リファクタリング後の各メソッドについて。

▼puts_message(message)
このメソッド内部で行なっているのはputsを呼び出して
メッセージを表示するだけです。
この内容ならばわざわざメソッドとして抽出しなくても
そのまま使用すれば意味がとれるため
メソッドのインライン化対象となります。