1. 概要(Overview)
Remove Parameter は、もはや不要になったメソッドの引数を削除し、
呼び出しをシンプルにするリファクタリングです。
引数が過剰だと API が分かりにくく、呼び出し側のコードにノイズを増やします。
不要なパラメータを削除することで、メソッド呼び出しを単純化し、誤用の可能性を減らすことができます。
目的は以下の通りです:
- 呼び出しをシンプルにする
- API の意図を明確にする
- 誤用を防止する
2. 適用シーン(When to Use)
- メソッドの処理に使われていない引数が残っている
- 引数が呼び出し側にとって「冗長」であり、常に同じ値しか渡されない
- リファクタリングや仕様変更で不要になったが、まだ引数が残っている
- 既にオブジェクト内部のフィールドやコンテキストから取得できる情報を、わざわざ外部から渡している
よくある匂い:
- Long Parameter List(長すぎる引数リスト)
- Duplicate Data(重複データ)
- Needless Indirection(不要な間接化)
3. 手順(Mechanics / Steps)
- メソッド内で使われていない、または冗長な引数を特定
- その引数を削除し、メソッドシグネチャを変更
- 呼び出し側コードを修正(不要な引数を渡さないように)
- コンパイルエラーがないことを確認
- テストを実行して挙動が変わっていないことを確認
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 は最小限で明確な形に保つべき