٣ تقنيات برمجية قوية لإزالة الشروط الفوضوية
تقديم ثلاث تقنيات برمجية قوية لتحسين وتبسيط الهياكل الشرطية المعقدة، مما يحسن جودة الصود وقابليتها للصيانة.
في تطوير البرمجيات، غالبًا ما نصادف منطق صود يحتاج إلى التعامل مع سيناريوهات متعددة. إذا لم تتم الإدارة بشكل صحيح، فإن هذه المنطقات يمكن أن تتطور بسهولة إلى سلاسل طويلة من if-else أو عبارات switch ضخمة. ستقدم هذه المقالة عدة تقنيات فعالة لتحسين هذه الهياكل، مما يحسن من جودة الصود وقابليتها للصيانة.
١. البرمجة الدفاعية: الإرجاع المبكر
لنفترض أننا نقوم بتطوير نظام مصادقة المستخدم الذي يحتاج إلى التحقق من حالات المستخدم المختلفة قبل السماح بالوصول:
هذا الصود يحتوي على مشاكل هيكلية واضحة. إنه يستخدم هياكل if-else المتداخلة بشكل عميق، مما يجعل الصود صعب القراءة والصيانة. مع زيادة عدد التحقق من الشروط، يزداد مستوى التداخل، مما يشكل ما يسمى بصود "على شكل سهم". يتشتت منطق معالجة الأخطاء عبر مستويات تداخل مختلفة، وهو ما لا يسهل إدارة متوحدة. الأهم من ذلك، أن المنطق الأساسي للصود - الحالة التي يُسمح فيها بالوصول - مدفون بعمق داخل طبقات متعددة من الأحكام الشرطية، ويفتقر إلى الوضوح. هذا النمط البرمجي لا يقلل فقط من قابلية قراءة الصود ولكنه يزيد أيضًا من خطر الأخطاء ويجعل توسيع الصود صعبًا.
يمكننا تحسين هذا الصود باستخدام نهج "الإرجاع المبكر":
من خلال تبني استراتيجية "الإرجاع المبكر"، نجحنا في تحسين هيكل الصود الأصلي.
هذه الطريقة تجلب عدة تحسينات:
- تقلل بشكل كبير من تعقيد التداخل في الصود. يتم التعامل مع كل تحقق من الشروط بشكل مستقل، مما يجعل المنطق الكلي أوضح وأكثر قابلية للفهم. هذا الهيكل المسطح لا يحسن فقط من قابلية قراءة الصود ولكنه أيضًا يقلل بشكل كبير من صعوبة الصيانة.
- تحقق هذه الطريقة تحسين مركزي لمنطق معالجة الأخطاء. من خلال إرجاع النتائج فورًا بعد كل تحقق من الشروط، نتجنب تنفيذ الصود غير الضروري بينما يتم مركزية معالجات الحالات المختلفة للأخطاء، مما يجعل عملية معالجة الأخطاء أكثر تنظيمًا.
- يصبح المنطق الأساسي للصود - شروط السماح بالوصول - أكثر بروزًا. هذا الهيكل يجعل الهدف الرئيسي للصود واضحًا على الفور، مما يعزز بشكل كبير من التعبيرية وقابلية فهام الصود.
٢. طريقة الجدول المرجعي
غالبًا ما نصادف سيناريوهات تحتاج فيها إلى إرجاع نتائج مختلفة بناءً على مدخلات مختلفة. إذا لم تتم الإدارة بشكل صحيح، فإن هذه المنطقات يمكن أن تتطور بسهولة إلى سلاسل طويلة من if-else أو عبارات switch ضخمة.على سبيل المثال، في منصة التجارة الإلكترونية، نحتاج إلى إرجاع أوصاف الحالة المقابلة بناءً على حالات الطلب المختلفة:
هذا سيناريو نموذجي لإرجاع نتائج مختلفة بناءً على حالات مختلفة. مع زيادة عدد الحالات، يصبح البيان switch أو أحكام if-else طويلة.علاوة على ذلك، في هذا السيناريو، إذا كان المستخدمون يحتاجون إلى ترجمة هذه المحتويات الحالة إلى لغات أخرى، فإن ذلك سيتطلب تعديل جسم الوظيفة أو إضافة وظائف جديدة، مما يجلب تكاليف صيانة كبيرة.
في هذه الحالة، يمكننا استخدام طريقة الجدول المرجعي لتحسين الصود:
أولاً، باستخدام كائن Map لتخزين العلاقة بين الحالات والأوصاف، يصبح الصود أكثر اختصارًا. لقد قمنا أيضًا بتسهيل نقل أوصاف الحالة إلى ملفات التكوين، مما يوفر سهولة في التدويل والتحديثات الديناميكية. عند إضافة حالات جديدة، لا نحتاج إلى تعديل الصود الأساسي، نحتاج فقط إلى إضافة أزواج المفتاح والقيمة المقابلة في التكوين.