Dalam perbincangan pengaturcaraan, satu persoalan timbul mengenai kaedah pilihan untuk menyemak kebolehtelapan penunjuk dalam C/C . Satu aliran pemikiran mengutamakan perbandingan eksplisit dengan NULL:
int * some_ptr; // ... if (some_ptr == NULL) { // Handle null-pointer error } else { // Proceed }
Pendekatan lain, yang dianggap sama sah, bergantung pada semakan batal tersirat:
int * some_ptr; // ... if (some_ptr) { // Proceed } else { // Handle null-pointer error }
Kes untuk Perbandingan Eksplisit
Penyokong perbandingan eksplisit berpendapat bahawa ia menyatakan secara eksplisit niat untuk menyemak penunjuk bukan NULL, meningkatkan kejelasan. Pendekatan ini menghilangkan sebarang ruang untuk kekaburan.
Kes untuk Semakan Tersirat
Sebaliknya, penyokong semakan tersirat berpendapat bahawa secara tersirat difahami bahawa menggunakan penunjuk dalam pernyataan if berfungsi sebagai ujian batal de facto. Selain itu, mereka menegaskan bahawa pendekatan tersirat mengurangkan kemungkinan kesilapan tugasan yang tidak disengajakan, seperti:
if (some_ptr = NULL)
Ralat ini, mereka berpendapat, boleh menjadi sukar untuk dikesan dan nyahpepijat.
Kesimpulan
Akhirnya, pilihan antara semakan batal tersurat dan tersirat adalah soal keutamaan peribadi. Kedua-dua kaedah adalah sah dan berkesan, memberikan pengesanan batal yang jelas dalam C/C .
Atas ialah kandungan terperinci Pemeriksaan Keterasingan Eksplisit vs. Tersirat dalam C/C : Pendekatan Mana Yang Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!