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?

【リファクタリング】Rename Method(メソッド名の変更)

Posted at

1. 概要(Overview)

Rename Method は、名前が曖昧または誤解を招くメソッドを、
意図や役割が明確に伝わる名前 に変更するリファクタリングです。

プログラムを理解するうえで「名前」は非常に重要な情報源です。
もし名前が分かりにくいと、呼び出し側のコードの可読性や理解速度が下がります。

目的は以下の通りです:

  • メソッドの役割を正しく伝える
  • 呼び出し側コードの可読性を改善する
  • 誤用やバグを防ぐ

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

  • メソッド名が抽象的すぎる(例:doProcess()handle() など)
  • 名前と実際の動作が一致していない
  • API 利用者が使うときに「このメソッドは何をするのか?」が分かりにくい
  • 長いコメントを書かないとメソッドの意図が伝わらない

よくある匂い:

  • Comments(コメント依存:名前だけで意図が分からない)
  • Inconsistent Naming(一貫性のない名前付け)

3. 手順(Mechanics / Steps)

  1. 名前が適切でないメソッドを特定する
  2. より具体的で分かりやすい名前を考える(ドメインに沿った名前)
  3. IDE やリファクタリングツールでメソッドをリネーム(呼び出し側も一括更新)
  4. テストを実行して影響範囲を確認
  5. コメントやドキュメントも合わせて更新する

4. Kotlin 例(Before → After)

Before:曖昧な名前のメソッド

class Order(val items: List<String>) {
    fun process() {
        println("Processing order: $items")
    }
}

fun main() {
    val order = Order(listOf("Apple", "Banana"))
    order.process()   // 何を「処理」しているのか分かりにくい
}

After:意図が明確な名前に変更

class Order(val items: List<String>) {
    fun printReceipt() {
        println("Receipt: $items")
    }
}

fun main() {
    val order = Order(listOf("Apple", "Banana"))
    order.printReceipt()   // 目的が明確で理解しやすい
}

5. 効果(Benefits)

  • 呼び出し側からメソッドの意図が一目で分かる
  • コメントに頼らず「名前だけで動作を理解できる」ようになる
  • API 利用者の誤用が減る
  • 長期的に保守しやすくなる

6. 注意点(Pitfalls)

  • プロジェクト全体で名前の一貫性を保つことが重要
  • 名前を変えると既存利用コードに影響する → IDE のリファクタリング機能で安全に変更すべき
  • あまりに長すぎる名前にすると逆に可読性が下がる(getCustomerOrderHistoryWithDiscountAppliedIfAvailable() のようなケース)

まとめ

  • Rename Method は「メソッド名を分かりやすく変更する」リファクタリング
  • 判断基準:その名前を見ただけでメソッドの意図が理解できるか?
  • 基本思想:名前は最も強力なドキュメントである

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?