Membandingkan Nilai NULL: Menilai (bCondition == NULL) lwn. (NULL == bCondition)
Dalam pengaturcaraan, tugas biasa apabila bekerja dengan penunjuk atau objek sedang menyemak sama ada ia adalah batal. Terdapat dua notasi biasa untuk melakukan semakan ini: (bCondition == NULL) dan (NULL == bCondition). Walaupun kedua-duanya kelihatan mempunyai tujuan yang sama, terdapat perbezaan yang ketara dalam tingkah laku mereka.
Mengapa Menggunakan (NULL == bCondition)?
Sebab utama penggunaan (NULL == bCondition) dan bukannya (bCondition == NULL) adalah untuk menyediakan peningkatan perlindungan terhadap kesilapan menaip. Khususnya, apabila membandingkan pembolehubah kepada NULL, ada kemungkinan untuk menggunakan operator tugasan (=) secara tidak sengaja dan bukannya operator perbandingan (==).
Sebagai contoh, pertimbangkan kod berikut:
if (bCondition = NULL) // typo here { // Code never executes }
Dalam contoh ini, pengaturcara tersilap menggunakan operator tugasan (=) dan bukannya operator perbandingan (==). Akibatnya, bCondition akan sentiasa ditetapkan kepada NULL, dan kod dalam pernyataan if tidak akan dilaksanakan.
Dengan menggunakan (NULL == bCondition), pengkompil akan mengeluarkan ralat atau amaran jika pengendali tugasan digunakan, menonjolkan potensi kesilapan menaip. Contohnya:
if (NULL = bCondition) // error -> compiler complains { // ... }
Gelagat Pengkompil dan NullPointerExceptions
Dalam sesetengah bahasa, pilihan antara (bCondition == NULL) dan (NULL == bCondition) juga boleh memberi kesan kepada cara pengecualian penuding nol dikendalikan.
Dalam bahasa yang NULL ialah pemalar, menggunakan (bCondition == NULL) boleh menghasilkan NullPointerException jika bCondition tidak dimulakan kepada penunjuk yang sah. Sebaliknya, menggunakan (NULL == bCondition) memastikan pengecualian hanya akan dilemparkan jika bCondition cuba mengakses lokasi memori yang tidak sah.
Perbandingan Contoh
Untuk menggambarkan perbezaan antara (bCondition == NULL) dan (NULL == bCondition), pertimbangkan perkara berikut contoh:
int *p = NULL; if (p == NULL) { // Execute this block if p is null } if (NULL == p) { // Execute this block if p is null }
Dalam contoh ini, kedua-dua pernyataan if akan melaksanakan kod yang sama. Walau bagaimanapun, jika pengendali tugasan (=) digunakan secara tidak sengaja dalam pernyataan pertama, ia akan mengakibatkan amaran atau ralat pengkompil.
Kesimpulan
Sementara (bCondition = = NULL) dan (NULL == bCondition) mungkin kelihatan boleh ditukar ganti pada pandangan pertama, menggunakan (NULL == bCondition) memberikan perlindungan tambahan terhadap kesilapan kesilapan yang tidak disengajakan dan boleh meningkatkan pengendalian pengecualian penuding nol. Sebagai peraturan umum, adalah disyorkan untuk menggunakan (NULL == bCondition) apabila menyemak nilai nol.
Atas ialah kandungan terperinci Adakah (NULL == bCondition) Lebih Baik Daripada (bCondition == NULL) untuk Pemeriksaan Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!