引数を省略するメソッドの考察
ruby、C++、VB、C#には引数のデフォルト値を設定して(Optional等)、
引数を省略できる言語仕様になっています。
何故Javaには導入されていないんだろうか? ふと疑問が湧きました。
実際には以下のようにオーバーロードで対応していると思います。
method(int i) { method(i, 0); } method(int i, int j) { //本処理 }
可読性の面で考えるとOptional等の機構があったほうがいいように思われます。
実際、多段的なオーバーロードを行い初期値の設定ミスによるバグが発生していた
ケースに遭遇したことがあります。
- オーバーロードの利点を考えてみる
引数を拡張し処理を加える場合
method(int i) { //本処理 }
を最初のオーバーロードのようにし、jをスイッチ的な要素で
使用する等の拡張開発を行うとする。
methodの呼び出し元は、現在まで存在していたmethod(int)を参照していた
はずであり、method(int)のインターフェースは変わっていないので
呼び出し元のクラスのリコンパイルは走らずコンパイルの影響度が少なくなる。
最近ではフルビルドが一般的なのであまり意味は成さなくなった気もしますが。。。
上記の利点は、まったくの憶測なのですが本当の理由とは何なのでしょう?