Walaupun peranannya bertujuan semata-mata sebagai jenis pulangan, penggunaan Pilihan sebagai hujah kaedah telah dibahaskan. Mari kita terokai hujah yang memihak kepada mengelakkan amalan ini:
Melalui parameter pilihan boleh membawa kepada logik bersyarat dalam kaedah, merumitkan kod dan menjadikannya lebih sukar untuk dikekalkan. Pertimbangkan contoh berikut:
public int calculateSomething(Optional<String> p1, Optional<BigDecimal> p2) { if (p1.isPresent() && p2.isPresent()) { return // ... logic with both values present } else if (p1.isPresent()) { return // ... logic with only p1 present } else if (p2.isPresent()) { return // ... logic with only p2 present } else { return // ... logic with both values absent } }
Membalut parameter nullable dalam Pilihan menimbulkan overhed masa jalan yang tidak perlu dengan menambahkan lapisan tambahan abstraksi. Sebagai perbandingan, menggunakan parameter boleh nullable secara langsung memerlukan lebih sedikit overhed.
Pilihan menanggung kos tambahan berbanding parameter boleh tonull. Kehadiran pembalut Pilihan memerlukan semakan dan operasi tambahan, yang boleh memberi kesan kepada prestasi, terutamanya dalam aplikasi kritikal prestasi.
Walaupun ia tidak dibenarkan melepasi null secara langsung sebagai parameter pilihan, masih terdapat risiko seseorang melepasi Pilihan yang mengandungi null. Ini boleh membawa kepada tingkah laku yang tidak dijangka dan potensi NullPointerExceptions.
Walaupun memberikan Pilihan sebagai hujah kaedah mungkin mempunyai penyokongnya, potensi untuk logik bersyarat, pembalut yang tidak perlu, implikasi prestasi dan risiko input null menjadikannya secara amnya tidak diingini. Untuk input kaedah, parameter nullable mewakili alternatif yang lebih bersih dan lebih cekap. Dengan mengikut garis panduan ini, pembangun boleh mempromosikan kebolehbacaan kod, kebolehselenggaraan dan prestasi.
Atas ialah kandungan terperinci Sekiranya Anda Mengelakkan Argumen Pilihan dalam Kaedah Java 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!