شرح المفهوم
هذا الدرس هو نقطة فحص للبنية وليس للصياغة. عند هذه النقطة، يجب أن تبدأ في فصل المسؤوليات بدلاً من وضع كل المنطق في ملف واحد أو دالة واحدة طويلة. يصبح برنامج C# البسيط أسهل في الاختبار عندما يتم تقسيم معالجة المدخلات والمنطق الأساسي والمخرجات بوضوح. هنا سترسم بنية صغيرة على نمط وحدة التحكم، وتربط الأجزاء، وتراجع سبب أهمية التخطيط. الهدف الرئيسي هو التعرف على متى يكون البرنامج صغيرًا بما يكفي للفهم، ولكنه كبير بما يكفي للاستفادة من تنظيم أفضل.
أين تضع الكود
- عرّف متغيرات اللون والموضع في الأعلى.
- أنشئ منطق رسم الأشكال أو وضعها في المنتصف.
- اعرض المخرجات (طباعة، لوحة، SVG، أو كتلة منسقة) في النهاية.
مرجع الأوامر
- حدد أي جزء من المثال يمتلك قاعدة العمل وأي جزء يتعامل فقط مع المخرجات.
- انقل مسؤولية واحدة إلى دالة أو صنف منفصل وتحقق مما إذا كان التدفق أوضح.
- غيّر القاعدة داخل الخدمة دون إعادة كتابة نقطة دخول البرنامج.
- صف لماذا هذه البنية أسهل في الاختبار من وضع كل شيء مباشرة في `Main`.
دليل خطوة بخطوة
- اقرأ المثال مرة واحدة وصنّف دور كل صنف أو دالة.
- شغّل الكود وتأكد من أن الخدمة تنتج الرسالة النهائية.
- غيّر قاعدة واحدة داخل الخدمة، مثل التنسيق أو الاقتطاع، وأعد تشغيل المثال.
- قارن هذا التخطيط بإصدار حيث يعيش كل الكود في `Main`.
- اختتم بتحديد ما إذا كانت البنية الحالية بسيطة وواضحة وسهلة التوسيع.
تمارين تطبيقية
- أنشئ خدمة صغيرة تقوم بتنسيق إجماليات الطلبات أو أسماء المستخدمين بدلاً من التحيات.
- أضف دالة ثانية إلى الخدمة وقرر ما إذا كانت لا تزال تنتمي إلى نفس الصنف.
- أعد كتابة المثال باستخدام دالة مساعدة أولاً، ثم قارنه بالإصدار القائم على الأصناف.
تحديات برمجية
- صمم تطبيق وحدة تحكم صغيرًا بأجزاء منفصلة لقراءة المدخلات وتطبيق المنطق وطباعة المخرجات.
- قارن بنيتين لنفس المهمة واشرح أيهما سيكون أسهل للتطوير لاحقًا.
مهام تمرين صغيرة
- أعد تسمية صنف أو دالة لجعل مسؤوليتها أوضح.
- أضف تحسينًا صغيرًا دون تغيير البنية العامة.
- اكتب ملاحظة من سطر واحد تشرح مما تحميك هذه البنية.
خطأ شائع
Mixing x and y axes or using wrong coordinate origin causes shapes to appear in unexpected places.
تحدٍ مصغّر من الواقع
Draw one square, one triangle, and one circle, then move X marker 2 steps right and 1 step down.