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?

【リファクタリング】Remove Parameter(パラメータの削除)

Posted at

1. 概要(Overview)

Remove Parameter は、もはや不要になったメソッドの引数を削除し、
呼び出しをシンプルにするリファクタリングです。

引数が過剰だと API が分かりにくく、呼び出し側のコードにノイズを増やします。
不要なパラメータを削除することで、メソッド呼び出しを単純化し、誤用の可能性を減らすことができます。

目的は以下の通りです:

  • 呼び出しをシンプルにする
  • API の意図を明確にする
  • 誤用を防止する

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

  • メソッドの処理に使われていない引数が残っている
  • 引数が呼び出し側にとって「冗長」であり、常に同じ値しか渡されない
  • リファクタリングや仕様変更で不要になったが、まだ引数が残っている
  • 既にオブジェクト内部のフィールドやコンテキストから取得できる情報を、わざわざ外部から渡している

よくある匂い:

  • Long Parameter List(長すぎる引数リスト)
  • Duplicate Data(重複データ)
  • Needless Indirection(不要な間接化)

3. 手順(Mechanics / Steps)

  1. メソッド内で使われていない、または冗長な引数を特定
  2. その引数を削除し、メソッドシグネチャを変更
  3. 呼び出し側コードを修正(不要な引数を渡さないように)
  4. コンパイルエラーがないことを確認
  5. テストを実行して挙動が変わっていないことを確認

4. Kotlin 例(Before → After)

Before:不要なパラメータが残っている

class Report(val title: String) {
    fun printReport(title: String) {  // ← 引数が内部フィールドと重複
        println("Report: ${this.title}")
    }
}

fun main() {
    val report = Report("Monthly Sales")
    report.printReport("Monthly Sales")  // 無駄に title を渡している
}

After:不要なパラメータを削除

class Report(val title: String) {
    fun printReport() {
        println("Report: $title")
    }
}

fun main() {
    val report = Report("Monthly Sales")
    report.printReport()  // スッキリ!
}
  • 引数 title を削除
  • 呼び出し側のコードがシンプルになった

5. 効果(Benefits)

  • 呼び出し側の負担が減り、コードが読みやすくなる
  • API の意図が明確になる(「この引数は不要」ではなく「そもそも存在しない」)
  • 誤用(不要な値を渡すミス)を防げる

6. 注意点(Pitfalls)

  • 既存の呼び出しコードをすべて修正する必要がある(影響範囲が広い可能性)
  • パラメータを削除したことで「柔軟性」が下がらないかを確認する
  • 将来的にその情報が再び必要になるなら、削除せず保持した方がよい場合もある

まとめ

  • Remove Parameter は「使われていない、または冗長な引数を削除する」リファクタリング
  • 判断基準:その引数は常に同じ値を渡していないか? 既に内部で取得可能ではないか?
  • 基本思想:API は最小限で明確な形に保つべき

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?