Ketika saya memiliki fungsi yang mungkin, atau mungkin tidak menerima parameter tertentu, apakah lebih baik membebani fungsi tersebut, atau menambahkan argumen opsional?
Jika masing-masing memiliki pasang surut - kapan saya akan menggunakan masing-masing?
Jawaban:
Jika bahasa mendukung mereka dengan benar (misalnya keamanan jenis, jika berlaku), saya lebih suka argumen opsional karena alasan berikut:
sumber
a
,b
danc
memiliki kemungkinan ini: tidak ada, a, b, c, ab, ac, bc, abc. Ini2^n
untuk tipe yang berbeda, bukann!
Dengan asumsi situasi semacam konstruktor: Saya sering memilih pola pembangun yang fasih untuk mencegah situasi dengan banyak pilihan.
Misalnya.
Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))
adalah contoh memanggil antarmuka pembangun yang lancar diimplementasikan di Guava.Tentu saja Anda sekarang memerlukan objek terpisah untuk menahan keadaan pembangun Anda, tetapi Anda mengurangi kerumitan keseluruhan dengan memisahkan perilaku membangun dari perilaku yang dibangun.
sumber