"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تجنب مخاطر التقييمات المنطقية غير الدقيقة في JS/TS

تجنب مخاطر التقييمات المنطقية غير الدقيقة في JS/TS

تم النشر بتاريخ 2024-08-01
تصفح:438

Éviter les pièges des évaluations booléennes imprécises en JS/TS

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

سياق المشكلة

الوضع الأولي

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

النهج الأولي وحدوده

في البداية، اخترت النهج الذي بدا لي منطقيًا وموجزًا:

if (terrainPret && arbitreArrive && 
    !equipeLocaleAbsente && !equipeVisiteuseAbsente) {
  // Commencer le match
}

بدا هذا الأسلوب أنيقًا: استخدام علامة التعجب (!) كان للتأكد من أن المتغيرات غير المتزامنة كانت خاطئة. ومع ذلك، سرعان ما اكتشفت أن هذه الطريقة تخفي فخًا خفيًا.

فخ التقييم المنطقي

الوحي

ظهرت المشكلة عندما أدركت أن الكود الخاص بي لا يعمل كما هو متوقع. بعد مزيد من التحقيق، أدركت أنني قد أغفلت جانبًا مهمًا من التقييم المنطقي في TypeScript.

الشرح الفني

في TypeScript، تعتبر العديد من القيم "خطأ"، أي أنه يتم تقييمها على أنها خاطئة في سياق منطقي. وتشمل هذه القيم:

  • خطأ شنيع
  • 0
  • "" (سلسلة فارغة)
  • باطل
  • غير معرف
  • لا

في حالتي، يمكن أن تكون المتغيرات غير المتزامنة غير محددة قبل تلقي قيمة من الواجهة الخلفية. وبالتالي، فإن الشرط !equipLocaleAbsente على سبيل المثال، كان صحيحًا ليس فقط عندما كان المتغير خطأ، ولكن أيضًا عندما كان غير محدد.

الحل: كن صريحا

النهج المصحح

لحل هذه المشكلة، كان علي أن أكون أكثر وضوحًا في حالتي:

if (terrainPret && arbitreArrive && 
    equipeLocaleAbsente === false && equipeVisiteuseAbsente === false) {
  // Commencer le match
}

يضمن هذا الأسلوب أن المتغيرات غير المتزامنة خاطئة على وجه التحديد، وليست مجرد قيمة "خاطئة".

فوائد الدقة

هذا الحل له العديد من المزايا:

  1. يزيل الغموض في تقييم الأحوال.
  2. يجعل الكود أكثر قابلية للقراءة وأكثر وضوحًا في نواياه.
  3. يمنع السلوك غير المتوقع المرتبط بتقييم القيم "الخاطئة".

خاتمة

ذكّرتني هذه التجربة بأهمية الدقة والوضوح في التعليمات البرمجية، خاصة عند العمل مع العمليات غير المتزامنة والتقييمات المنطقية. كما أنه يسلط الضوء على الحاجة إلى فهم الفروق الدقيقة في اللغة التي نستخدمها.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/bassaoudev/eviter-les-pieges-des-evaluations-booleennes-imprecises-en-jsts-19hg?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3