Riot: Hindari penggunaan goto

Dibuat pada 6 Jul 2017  ·  6Komentar  ·  Sumber: RIOT-OS/RIOT

Menggunakan goto adalah praktik pemrograman yang buruk. Mungkin ada beberapa manfaat untuk digunakan dalam kode inti (saya tidak bisa melihatnya), tetapi demi Tuhan jangan menggunakannya dalam contoh.

File yang menarik perhatian saya adalah RIOT/blob/master/examples/gcoap/gcoap_cli.c yang pada baris 139 memiliki goto statememt, yang dapat dengan mudah diganti dengan kode di bawah label end: (hanya dua baris).

contested minor cleanup

Semua 6 komentar

untuk contoh gcoap Anda tentu benar. Di sisi lain ada sekitar 30 (sesuatu) penggunaan goto di RIOT secara keseluruhan, mengingat ini adalah sistem operasi IoT (tertanam), jumlah itu agak rendah.

Jadi, jangan ragu untuk memberikan PR yang memperbaiki contoh gcoap, tetapi jika tidak, saya tidak melihat ini sebagai masalah (setidaknya untuk saat ini).

Menggunakan goto adalah praktik pemrograman yang buruk.

Itu bisa diperdebatkan. Menggunakan goto untuk penanganan kesalahan dalam C sebenarnya dianggap sebagai praktik yang baik oleh banyak orang, karena sering kali menghasilkan kode yang lebih mudah dibaca dan lebih sedikit kesalahan.

gcoap_cli.c yang pada baris 139 memiliki goto statememt, yang dapat dengan mudah diganti dengan kode di bawah label end: (hanya dua baris).

Maksud Anda, duplikat panggilan printf?

Maksud Anda, duplikat panggilan printf?

Saya pikir kode dapat dengan mudah dikerjakan ulang menggunakan if .. else if ... else menghindari goto tanpa mempengaruhi keterbacaan - yang tidak mungkin dalam semua kasus di mana goto digunakan.

Maksud Anda, duplikat panggilan printf?
Saya pikir kode dapat dengan mudah dikerjakan ulang menggunakan ...

Tentu. Saya ingin menunjukkan bahwa hanya menyalin dua baris tidak akan memotongnya.

Ini bukan tentang mengurangi baris kode. Ini tentang keterbacaan dan praktik kode yang baik. Ketika goto digunakan sebagai ganti if...else.... maka "itu dianggap berbahaya"

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

jcarrano picture jcarrano  ·  5Komentar

kaspar030 picture kaspar030  ·  6Komentar

hcnhcn012 picture hcnhcn012  ·  5Komentar

chrysn picture chrysn  ·  5Komentar

nmeum picture nmeum  ·  5Komentar