Memang terlihat bau, dan tanpa melihat lebih banyak konteks tidak mungkin untuk mengatakan dengan pasti. Mungkin ada dua alasan untuk melakukan ini, meskipun ada alternatif untuk keduanya.
Pertama, ini adalah cara ringkas untuk mengimplementasikan konversi sebagian, atau membiarkan hasilnya dengan nilai default jika konversi gagal. Yaitu, Anda mungkin memiliki ini:
public void ConvertFoo(Foo from, Foo to) {
if (can't convert) {
return;
}
...
}
Foo a;
Foo b = DefaultFoo();
ConvertFoo(a, b);
// If conversion fails, b is unchanged
Tentu saja, biasanya ini ditangani dengan menggunakan pengecualian. Namun, bahkan jika pengecualian perlu dihindari karena alasan apa pun, ada cara yang lebih baik untuk melakukan ini - pola TryParse menjadi satu opsi.
Alasan lain adalah bahwa itu bisa karena alasan konsistensi murni, misalnya itu adalah bagian dari API publik di mana metode ini digunakan untuk semua fungsi konversi untuk alasan apa pun (seperti fungsi konversi lainnya yang memiliki banyak keluaran).
Java tidak hebat dalam menangani beberapa keluaran - ia tidak bisa memiliki parameter keluaran saja seperti beberapa bahasa, atau memiliki beberapa nilai pengembalian seperti yang lain - tetapi meskipun demikian, Anda masih bisa menggunakan objek pengembalian.
Alasan konsistensi agak timpang tetapi sayangnya itu mungkin yang paling umum.
- Mungkin gaya polisi di tempat kerja Anda (atau basis kode Anda) berasal dari latar belakang non-Jawa dan enggan berubah.
- Kode Anda mungkin merupakan port dari bahasa tempat gaya ini lebih idiomatis.
- Organisasi Anda mungkin perlu mempertahankan konsistensi API di berbagai bahasa, dan ini adalah gaya penyebut yang paling umum (itu gila tapi itu terjadi bahkan untuk Google ).
- Atau mungkin gaya lebih masuk akal di masa lalu yang jauh dan berubah menjadi bentuk saat ini (misalnya, itu bisa menjadi pola TryParse tetapi beberapa pendahulu yang bermaksud baik menghapus nilai kembali setelah menemukan bahwa tidak ada yang memeriksanya sama sekali).