Rumah >Java >javaTutorial >Sekiranya saya Menggunakan Pilihan sebagai Argumen Kaedah di Jawa?

Sekiranya saya Menggunakan Pilihan sebagai Argumen Kaedah di Jawa?

Susan Sarandon
Susan Sarandonasal
2024-12-18 20:03:11670semak imbas

Should I Use Optional as Method Arguments in Java?

Mengelakkan Pilihan sebagai Argumen Kaedah: Justifikasi

Pengenalan:

Walaupun nampaknya intuitif untuk menggunakan Pilihan Java 8 sebagai hujah kaedah untuk mengendalikan parameter pilihan atau boleh batal, ia secara amnya dianggap sebagai amalan suboptimum. Artikel ini meneroka sebab mengapa pengesyoran ini dilaksanakan.

Kesalahan Hujah Pilihan:

1. Kerumitan Kod:
Menggunakan Pilihan dalam hujah memperkenalkan logik bersyarat dalam kaedah. Setiap hujah pilihan memerlukan semakan ketiadaan atau kehadiran, yang membawa kepada percabangan tambahan dan kerumitan kod.

2. Ketidakcekapan Pengkompil:
Pilihan mewakili pembalut untuk objek boleh null, mencipta overhed yang tidak perlu dan menelan kos lebih daripada parameter boleh null dari segi penyusunan.

3. Kebolehbatalan Pilihan:
Tidak seperti argumen boleh dibatalkan, yang secara eksplisit menunjukkan kemungkinan nilai nol, Pilihan sendiri boleh menjadi batal. Ketidakkonsistenan ini boleh membawa kepada ralat jika Pilihan batal diluluskan secara tidak sengaja.

4. Lebihan:
Jenis pulangan pilihan sudah menunjukkan potensi ketiadaan nilai. Penduaan maklumat ini dalam argumen kaedah adalah berlebihan dan boleh menjadikan kod kurang boleh dibaca.

Pilihan Alternatif:

Daripada menggunakan Pilihan dalam argumen, pertimbangkan alternatif ini:

1. Parameter Boleh Null:
Isytiharkan parameter sebagai boleh batal (cth., dengan String p1, BigDecimal p2) dan lakukan semakan nol secara eksplisit dalam kaedah. Ini lebih jelas dan lebih cekap daripada menggunakan Pilihan.

2. Melebihan Kaedah:
Buat lebihan kaedah berasingan untuk kombinasi argumen yang berbeza (cth., hitungSesuatu(), hitungSesuatu(String), hitungSesuatu(BigDecimal), hitungSesuatu(String, BigDecimal)). Ini menyediakan antara muka yang lebih intuitif dan fleksibel.

Contoh:

Pertimbangkan contoh kod yang disediakan dalam soalan. Menggunakan parameter nullable dan semakan null eksplisit, kod panggilan akan memudahkan kepada:

String p1 = otherObject.getP1().orElse(null);
BigDecimal p2 = otherObject.getP2().orElse(null);
int result = myObject.calculateSomething(p1, p2);

Kesimpulan:

Walaupun Pilihan menyediakan cara yang mudah untuk mengendalikan nilai nullable sebagai pulangan jenis, penggunaannya sebagai hujah kaedah memperkenalkan kerumitan, ketidakcekapan, dan redundansi. Merangkul parameter nullable atau kaedah overloading menawarkan pendekatan yang lebih jelas, cekap dan boleh diselenggara untuk mengendalikan parameter input pilihan atau nullable.

Atas ialah kandungan terperinci Sekiranya saya Menggunakan Pilihan sebagai Argumen Kaedah di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn