1. 概要(Overview)
Inline Temp は、短命で意味のない一時変数を取り除き、そのまま式を直接使う ようにするリファクタリングです。
目的は以下の通りです:
- 不要な変数を減らしてコードをシンプルにする
- 過剰な抽象化や冗長なコードを避ける
- 本当に意味のある変数だけを残す
2. 適用シーン(When to Use)
- 変数が 一度しか使われない
- 変数名が 式の意味を表していない/曖昧
- 式自体が十分シンプルで、そのまま使った方が分かりやすい
- Extract Variable を適用したが、名前に意味がなく冗長になっている
よくある匂い:
- Temporary Field(不要な一時変数)
- Needless Indirection(不要な間接化)
3. 手順(Mechanics / Steps)
- インライン化対象の一時変数を特定
- 変数の代入式を呼び出し元へ直接コピー
- すべての参照箇所を置き換える
- 変数宣言を削除
- テストを実行して動作確認
4. Kotlin 例(Before → After)
Before:不要な一時変数
fun calculateDiscount(price: Double): Double {
val discount = price * 0.1
return discount
}
-
discountは一度しか使われておらず、名前の価値も薄い。
After①:インライン化
fun calculateDiscount(price: Double): Double {
return price * 0.1
}
→ シンプルになり、変数がなくても意図が十分に明確。
After②:Kotlin らしくさらに簡潔に
fun calculateDiscount(price: Double) = price * 0.1
→ 不要な記述を削ってスッキリ。
5. 効果(Benefits)
- 不要な変数を削除し、コードが短くシンプルに
- 読む人が余計な変数名を追わなくて済む
- 冗長な間接化を避け、処理の意図が明確になる
6. 注意点(Pitfalls)
- 式が複雑な場合は逆効果(この場合は Extract Variable の方が有効)
- 変数名によって「意図」が伝わっている場合は残すべき
- 例:
val highSpender = customer.totalAmount() > 100000
- 例:
- 安易にすべてインライン化すると、条件式や計算が読みにくくなる
まとめ
- Inline Temp は「不要な一時変数を式に戻す」リファクタリング
- 判断基準:その変数は本当に説明力を持っているか?
- 基本思想:変数を減らし、コードをシンプルに保つ