Karena sifat komutatifnya , satu-satunya perbedaan antara object == null
dan null == object
( versi Yoda ) adalah pada sifat kognitif : bagaimana kode dibaca dan dicerna oleh pembaca. Saya tidak tahu jawaban pasti, tapi saya tahu saya secara pribadi lebih suka membandingkan objek yang saya periksa dengan sesuatu yang lain, daripada membandingkan sesuatu yang lain dengan objek yang saya periksa , jika itu masuk akal. Mulailah dengan subjeknya, lalu nilai untuk membandingkannya.
Dalam beberapa bahasa lain gaya perbandingan ini lebih berguna.
Untuk melindungi dari tanda "=" yang hilang secara umum, menurut saya menulis null == object
adalah tindakan pemrograman defensif yang salah arah . Cara yang lebih baik untuk mengatasi kode khusus ini adalah dengan menjamin perilakunya dengan uji junit. Ingat, kemungkinan kesalahan kehilangan "=" tidak bergantung pada argumen input metode - Anda tidak bergantung pada penggunaan yang benar dari API ini oleh orang lain - jadi pengujian junit sempurna untuk melindungi dari itu. Bagaimanapun Anda akan ingin menulis tes junit untuk memverifikasi perilaku; "=" yang hilang secara alami berada dalam cakupan.