فحص تأثير الوظائف الكبيرة متعددة الأغراض
"الوظيفة الكبيرة" (أو "الطريقة الطويلة") هي وظيفة أو طريقة تحاول القيام بالكثير. غالبا ما تتطلب الوظائف الكبيرة التمرير لعرض التعليمات البرمجية والتعامل مع مهام أو مخاوف متعددة.
لا يوجد تعريف صارم لعدد الأسطر لدالة كبيرة. تقترح الإرشادات الأكثر شيوعا استخدام 40-50 سطرا كعتبة حيث يجب أن تفكر في التدقيق. ومع ذلك ، هناك أيضا إرشادات تشير إلى عتبة 20 سطرا.
لماذا الوظائف الكبيرة سيئة؟
- ضعف القراءة: لا يمكنك فهم ما تفعله وظيفة كبيرة بسرعة لأن المخاوف المتعددة متشابكة.
- يصعب صيانتها: يمكن أن يؤثر التغيير في جزء واحد من دالة كبيرة بشكل غير متوقع على أجزاء أخرى ، مما يؤدي إلى حدوث أخطاء.
- إعادة استخدام منخفضة: لا يمكن إعادة استخدام الأجزاء المنطقية المفيدة داخل دالة كبيرة في مكان آخر بسهولة.
- يصعب اختباره: تعد اختبارات الوحدة المكتوبة لوظيفة مكونة من 100 سطر أمرا صعبا. يجب عليك إعداد جميع متطلباته الأساسية ، وقد تتمكن فقط من اختبار النتيجة النهائية.
- تصحيح الألم : عندما تفشل دالة كبيرة أو تلقي استثناء ، قد يشير تتبع المكدس إلى تلك الوظيفة. عليك بعد ذلك البحث في كل شيء للعثور على المشكلة.
سيناريوهات العالم الحقيقي
تظهر وظائف كبيرة في جميع أنواع التطبيقات. قد يلاحظ المطور الخبير نفس النمط بأشكال عديدة:
- معالجات الويب المتجانسة: في تطبيقات الويب، قد يعالج إجراء وحدة تحكم واحد أو نقطة نهاية واجهة برمجة التطبيقات التحقق من الصحة ومنطق الأعمال واستدعاءات قاعدة البيانات معا.
- معالجات الأحداث "God": في واجهات مستخدم سطح المكتب أو الأجهزة المحمولة، قد يتراكم معالج الأحداث (مثل تحديد زر) الوظائف بمرور الوقت.
-
البرامج النصية الكل في واحد: غالبا ما تحتوي تطبيقات وحدة التحكم أو البرامج النصية على
Mainوظيفة واحدة أو وظيفة واحدة تقوم بتنفيذ سلسلة من الخطوات في كتلة واحدة. - خوارزميات معقدة دفعة واحدة: في بعض الأحيان يكتب المطورون خوارزمية معقدة كوظيفة واحدة كبيرة - ربما يحللون تنسيق ملف أو يحسبون نتيجة بالعديد من الخطوات.
مشاكل عبر الأنواع
بغض النظر عما إذا كانت الوظيفة في طبقة واجهة مستخدم أو طبقة منطق أعمال أو فئة أداة مساعدة ، فإن مشاكل قابلية الصيانة وسهولة القراءة لا تزال قائمة. يمكن أن تؤدي الوظائف الكبيرة في أي طبقة إلى:
- اقتران ضيق: يمكن أن تؤثر التغييرات في جزء واحد من الوظيفة على أجزاء أخرى ، مما يجعل من الصعب عزل التغييرات.
- انخفاض التماسك: تحاول الوظيفة القيام بأشياء كثيرة ، مما يجعل من الصعب فهم الغرض منها.
- زيادة التعقيد: كلما زاد المنطق المعبأ في وظيفة واحدة ، زادت صعوبة متابعة تدفق التنفيذ.
- تحديات الاختبار: تصبح اختبارات الوحدة أكثر تعقيدا وأقل فعالية عند محاولة تغطية جميع الوظائف في وظيفة كبيرة.
الملخص
الوظائف الكبيرة ليست مجرد مشكلة جمالية - فهي تبطئ التطور وتزيد من المخاطر. تجعل الوظائف الكبيرة من الصعب فهم المنطق وصيانته واختباره وإعادة استخدامه. عندما يكون المطور قادرا على التعرف على علامات الوظائف الكبيرة وفهم تأثيرها ، يمكنه اتخاذ خطوات لإعادة هيكلتها إلى وظائف أصغر أحادية الغرض يسهل التعامل معها.