Riot: تجنب استخدام الانتقال

تم إنشاؤها على ٦ يوليو ٢٠١٧  ·  6تعليقات  ·  مصدر: RIOT-OS/RIOT

يعد استخدام goto ممارسة برمجة رهيبة. قد تكون هناك بعض الفوائد لاستخدامها في الكود الأساسي (لا يمكنني رؤية أي منها) ، ولكن بحق الله لا تستخدمها في الأمثلة.

الملف الذي لفت انتباهي هو RIOT / blob / master / أمثلة / gcoap / gcoap_cli.c والذي يحتوي في السطر 139 على goto statememt ، والذي يمكن استبداله ببساطة بالكود الموجود أسفل نهاية التسمية: (سطرين فقط).

contested minor cleanup

ال 6 كومينتر

بالنسبة لمثال gcoap ، فأنت محق بالتأكيد. من ناحية أخرى ، هناك ما يقرب من 30 (شيء) استخدامًا لـ goto في RIOT بشكل عام ، مع الأخذ في الاعتبار أن هذا نظام تشغيل IoT (مضمن) ، فإن هذا العدد منخفض نوعًا ما.

لذا ، لا تتردد في تقديم العلاقات العامة لإصلاح مثال gcoap ، ولكن بخلاف ذلك ، لا أرى هذه مشكلة (على الأقل في الوقت الحالي).

يعد استخدام goto ممارسة برمجة رهيبة.

هذا أمر قابل للنقاش. يعتبر استخدام goto لمعالجة الأخطاء في لغة C ممارسة جيدة من قبل الكثيرين ، لأنه غالبًا ما يؤدي إلى رمز أكثر قابلية للقراءة وأقل عرضة للخطأ.

gcoap_cli.c الذي يحتوي في السطر 139 على goto statememt ، والذي يمكن استبداله ببساطة بالكود الموجود أسفل نهاية التسمية: (سطرين فقط).

تقصد تكرار المكالمة printf؟

تقصد تكرار المكالمة printf؟

أعتقد أنه يمكن إعادة صياغة الكود بسهولة باستخدام if .. else if ... else مع تجنب goto دون التأثير على قابلية القراءة - وهو أمر غير ممكن في جميع الحالات التي يتم فيها استخدام goto .

تقصد تكرار المكالمة printf؟
أعتقد أنه يمكن إعادة صياغة الكود بسهولة باستخدام ...

بالتأكيد. أردت أن أشير إلى أن مجرد نسخ السطرين لن يقطعها.

لا يتعلق الأمر بتقليل سطر الرموز. يتعلق الأمر بقابلية القراءة وممارسات الكود الجيدة. عند استخدام goto بدلاً من if ... else .... ثم "يعتبر ضارًا"

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات