0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【リファクタリング】Inline Temp(変数のインライン化)

Posted at

1. 概要(Overview)

Inline Temp は、短命で意味のない一時変数を取り除き、そのまま式を直接使う ようにするリファクタリングです。

目的は以下の通りです:

  • 不要な変数を減らしてコードをシンプルにする
  • 過剰な抽象化や冗長なコードを避ける
  • 本当に意味のある変数だけを残す

2. 適用シーン(When to Use)

  • 変数が 一度しか使われない
  • 変数名が 式の意味を表していない/曖昧
  • 式自体が十分シンプルで、そのまま使った方が分かりやすい
  • Extract Variable を適用したが、名前に意味がなく冗長になっている

よくある匂い:

  • Temporary Field(不要な一時変数)
  • Needless Indirection(不要な間接化)

3. 手順(Mechanics / Steps)

  1. インライン化対象の一時変数を特定
  2. 変数の代入式を呼び出し元へ直接コピー
  3. すべての参照箇所を置き換える
  4. 変数宣言を削除
  5. テストを実行して動作確認

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 は「不要な一時変数を式に戻す」リファクタリング
  • 判断基準:その変数は本当に説明力を持っているか?
  • 基本思想:変数を減らし、コードをシンプルに保つ

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?