شرح المفهوم
يتناول هذا الدرس تنظيف التعليمات البرمجية العاملة دون تغيير ما يفعله البرنامج بالفعل. قد يبدو الأمر بسيطًا، لكن المبتدئين غالبًا ما يرتكبون نفس الخطأ هنا: يبدأون في إعادة الهيكلة، ثم يغيرون السلوك بهدوء في نفس الوقت. بمجرد حدوث ذلك، يصبح من الصعب معرفة ما إذا كان السكريبت أصبح أنظف أم أنه معطل بطريقة جديدة. إعادة الهيكلة الجيدة تحافظ على نفس النتيجة بينما تجعل التعليمات البرمجية أسهل في القراءة، وأسهل في الشرح، وأسهل في التوسيع لاحقًا. في هذا الدرس، ستأخذ سكريبتًا صغيرًا بتنسيق متكرر وتحوله إلى شيء أكثر تنظيمًا عن طريق نقل المنطق المتكرر إلى دالة مساعدة (helper function) والحفاظ على نقطة الدخول (entry point) صغيرة. بنهاية هذا الدرس، ستكون قادرًا على: • شرح ما يعنيه إعادة الهيكلة دون تغيير السلوك، • اكتشاف التنسيق المتكرر أو بناء السلاسل النصية المتكرر في سكريبت صغير، • نقل هذا التكرار إلى دالة مساعدة ذات اسم واضح. لماذا هذا مهم: بمجرد أن تتجاوز ملفاتك بضعة أسطر، فإن التعليمات البرمجية الفوضوية تبطئك أكثر من صعوبة بناء الجملة. تعلم تنظيف التعليمات البرمجية مبكرًا يوفر لك الوقت في كل درس بعد هذا.
أين تضع الكود
- عرّف متغيرات اللون والموضع في الأعلى.
- أنشئ منطق رسم الأشكال أو وضعها في المنتصف.
- اعرض المخرجات (طباعة، لوحة رسم، SVG، أو كتلة منسقة) في النهاية.
مرجع الأوامر
- أعد هيكلة شيء صغير واحد في كل مرة، ثم شغّل الملف مرة أخرى قبل لمس أي شيء آخر.
- عندما يظهر نفس التنسيق أكثر من مرة، انقله إلى دالة مساعدة بدلاً من إعادة بنائه في أماكن متعددة.
- اجعل `main()` يركز على التنسيق: جهّز القيم، استدعِ الدوال المساعدة، واطبع النتيجة النهائية.
- إذا تغيرت المخرجات أثناء إعادة الهيكلة، توقف وقارن الإصدارين القديم والجديد قبل المتابعة.
دليل خطوة بخطوة
- شغّل السكريبت مرة واحدة واكتب السطرين بالضبط اللذين يطبعهما.
- ابحث عن الجزء من التعليمات البرمجية الذي سيصبح مزعجًا تكراره إذا احتجت إلى خمسة أسماء أخرى.
- أعد تسمية الدالة المساعدة (helper function) والمتغيرات بحيث يكون غرضها واضحًا حتى بدون تعليقات.
- أضف اسم مثال ثالث بمسافات إضافية وتأكد من أن المخرجات لا تزال نظيفة ومتسقة.
- اكتب جملة واحدة تشرح ما الذي بقي كما هو بعد إعادة الهيكلة وما الذي أصبح أسهل في القراءة.
تمارين تطبيقية
- خذ سكريبتًا قصيرًا كتبته سابقًا وابحث عن سلسلة نصية متكررة أو نمط طباعة متكرر يمكنك نقله إلى دالة مساعدة.
- اشرح لماذا `DEFAULT_NAME` أسهل في الصيانة من كتابة نفس القيمة الاحتياطية في أماكن متعددة.
- غيّر تنسيق اللافتة (banner) مرة واحدة وتأكد من تحديث كل نتيجة مطبوعة تلقائيًا لأن المنطق موجود في مكان واحد.
تحديات برمجية
- أضف دالة مساعدة ثانية تعيد سطر ترحيب عادي، ثم استدعِ كلا الدالتين المساعدتين من `main()` دون جعل الملف أصعب في القراءة.
- أعد هيكلة السكريبت بحيث يمكن لزميل مستقبلي تبديل نمط اللافتة (banner style) في مكان واحد فقط، دون أي تغييرات على استدعاءات الطباعة.
مهام تمرين صغيرة
- استخدم ميزة إعادة التسمية في محرر النصوص الخاص بك مرة واحدة بدلاً من إعادة التسمية يدويًا في كل مكان.
- شغّل الملف بعد كل تغيير صغير بدلاً من الانتظار حتى النهاية.
- اكتب ملاحظة واحدة لنفسك: التعليمات البرمجية النظيفة يجب أن تكون أسهل في الفهم، وليس فقط أقصر.
خطأ شائع
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.