العربية  

books left hand comparisons

If you do not find what you're looking for, you can use more accurate words.

View more

مقارنات اليد اليسرى (Info)


في اللغات التي تستخدم رمزًا واحدًا (عادة ما يكون علامة يساوي فردية، (=)) لـ مهمة ورمزًا آخرًا (عادة ما يكون علامة يساوي زوجية، (==) لـ مقارنة (مثل ]]C/C++]]، جاوة (جزيرة)، أكشن سكربت, بي إتش بي, بيرل سياق رقمي وأغلب اللغات في 15 عامًا الماضية)، وحيثما تكون هناك إمكانية لتنفيذ المهام ضمن هياكل تحكم توجد ميزة لتبني نمط المقارنة على اليسار: لوضع ثوابت أو تعبيرات إلى اليسار في أي مقارنة.

فيما يلي كلا النمطين من المقارنات على اليسار وعلى اليمين المطبقة على سطر التعليمة البرمجية بيرل. تقوم هذه المقارنة في كلتا الحالتين بمقارنة القيمة المتغير $a مقابل 42، وفي حالة توافقها، يتم تنفيذ التعليمة البرمجية في المجموعة التالية.

if ( $a == 42 ) { ... } # A right-hand comparison checking if $a equals 42. if ( 42 == $a ) { ... } # Recast, using the left-hand comparison style.

يحدث الاختلاف عند قيام المطور بكتابة = بدلاً من == دون قصد:

if ( $a = 42 ) { ... } # Inadvertent assignment which is often hard to debug if ( 42 = $a ) { ... } # Compile time error indicates source of problem

السطر الأول (على اليمين) على خلل دقيق كامن: وبخلاف الأسلوب السابق، يتم تحديد قيمة $a لتكون 42، ثم يتم تشغيل التعليمة البرمجية دومًا في المجموعة التالية. نظرًا لكون هذا صحيحًا من الناحية الإنشائية، فإنه ربما لا تتم ملاحظة الخطأ بواسطة المبرمج وربما يتم شحن البرنامج وهو محتوٍ على خطأ. يحتوي السطر الثاني (على اليسار) على خطأ دلالي حيث لا يمكن تخصيص قيم رقمية له. سوف ينتج عن هذا إنشاء رسالة تشخيصية عند إجراء التحليل البرمجي للتعليمة البرمجية وبالتالي لا يمكن عدم ملاحظة الخطأ بواسطة المبرمج. تحتوي بعض اللغات على وسائل حماية مضمنة ضد المهام غير المتعمدة. على سبيل المثال، لا تدعم جاوة (جزيرة) وC التحويل التلقائي للقيمة المنطقية فقط لهذا السبب. يمكن أيضًا التقليل من حجم المخاطر من خلال استخدام أدوات تحليل التعليمات البرمجية الثابتة والتي يمكنها اكتشاف هذه المشكلة.

Source: wikipedia.org