読者です 読者をやめる 読者になる 読者になる

考えなしにnullを渡すのってやっぱ嫌いだ

Javaのソース中にgetHogeListというようなメソッドがあって、そこにtypeを渡せるのだがこれが

List<Hoge> hogeList = hogeService.getHogeList( "id_hoge", false, false, null );

みたいになっていて、nullを渡している。
こういうソースって見かけると「一体何がnullなんですか!!」という気持ちになってちょっと切ない。
ここのnullは「typeを指定しない場合にnullを渡す、typeを指定すると指定したtypeのHogeだけが返る」という意味なのだが、
直感的にどうなの、という気がしてしまう。
nullを渡すのではなく省略できる(overloadされている)のが「渡さない=指定しない」となってスマート、という気がするのだけども。

追記:

ちょっとごっちゃになっているので。

HogeService.GET_ENABLEONLY = true;
HogeService.GET_ALL = false;
HogeService.DISTINCT_ON = true;
HogeService.DISTINCT_OFF = false;
HogeService.TYPE_UNUSED = null;

という定義があるなら、

List<Hoge> hogeList = hogeService.getHogeList( "id_hoge", false, false, null );
を
List<Hoge> hogeList = hogeService.getHogeList( "id_hoge", HogeService.GET_ALL, HogeService.DISTINCT_OFF, HogeService.TYPE_UNUSED );

とする分には「許容」です。
あとは適切な省略メソッド(overload)を用意するか。
キーワード引数はこれらに対する解答の一つだけれども、メソッド側の名前が変わった瞬間、呼び出している側に影響する点が弱点。