Penggunaan Goto yang Baik dalam C atau C
Walaupun pandangan yang sering dipegang bahawa goto berbahaya secara universal, terdapat keadaan tertentu di mana ia penggunaan boleh memberikan faedah yang jelas.
Pembersihan Blok
Satu kes sedemikian adalah dalam penciptaan blok pembersihan, corak yang biasa digunakan dalam C untuk memastikan pengagihan sumber yang betul sekiranya berlaku ralat. Menggunakan goto, kami boleh melaksanakan blok pembersihan seperti berikut:
void foo() { if (!doA()) goto exit; if (!doB()) goto cleanupA; if (!doC()) goto cleanupB; /* everything has succeeded */ return; cleanupB: undoB(); cleanupA: undoA(); exit: return; }
Kod ini membolehkan pengendalian keadaan ralat yang jelas dan cekap. Sekiranya berlaku ralat dalam doB() atau doC(), fungsi pembersihan yang sesuai dipanggil dan pelaksanaan diteruskan ke label keluar untuk kembali daripada fungsi.
Cawangan Tanpa Syarat Khusus
Goto juga boleh memberi manfaat apabila melakukan percabangan tanpa syarat tertentu. Contohnya, kod berikut mensimulasikan gelung tak terhingga menggunakan goto:
infinite_loop: // code goes here goto infinite_loop;
Pendekatan ini lebih khusus dan mendokumentasikan diri daripada menggunakan gelung sementara dengan keadaan merosot, kerana ia jelas menunjukkan niat untuk meneruskan gelung .
Awas
Adalah penting untuk ambil perhatian bahawa goto tidak boleh digunakan sembarangan. Ia boleh membawa kepada kod spageti dengan mudah jika tidak digunakan dengan bijak. Walau bagaimanapun, apabila digunakan dengan sewajarnya, ia boleh menyediakan alat yang berharga untuk mencipta kod yang cekap dan boleh dibaca.
Atas ialah kandungan terperinci Bilakah Penggunaan `goto` dalam C atau C Boleh Diterima?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!