تخطَّ إلى المحتوى

الكود النظيف

الدرس 18 من 20 8 دقايق قراءة

الهدف

بنهاية الدرس تقدر تأخذ route handler ممزوج (HTTP + business logic + database) وتقسّمه لثلاث ملفات منفصلة، وتضيف JSDoc documentation لـ public functions.

ليش هذا الحين؟

ترى في البداية، كل الكود في route handler واحد — يشتغل. المشكلة تجي بعد 3 أشهر لما تحاول تضيف feature أو تصلح bug. تقرأ كود كتبته وما تفهمه. هذا يعني إنك كتبت كود ما يقبل التغيير. إعادة الهيكلة (refactoring) والـ patterns مو نظرية — هي الطريقة اللي تخلي مشروعك يعيش أكثر من شهرين.

الفكرة

Refactoring = تحسين الهيكل بدون تغيير السلوك. البرنامج يسوي نفس الشي قبل وبعد — بس الكود أوضح وأسهل في التعديل.

3 Patterns للـ Solo Founder:

1. نمط المستودع (Repository Pattern) — كل database access في مكان واحد:

❌ بدونه:   Route Handler → prisma.user.findMany() مباشرة
✅ معه:     Route Handler → userRepository.findAll() → prisma.user.findMany()

الفايدة: لو تغيّرت الـ database أو أداة الربط بقاعدة البيانات (ORM)، تعدّل في مكان واحد.

2. طبقة الخدمة (Service Layer) — business logic بعيدة عن الـ HTTP:

❌ بدونه:   Route Handler فيه validation + calculations + DB + email sending
✅ معه:     Route Handler (HTTP only) → Service (business logic) → Repository (DB)

الفايدة: تقدر تختبر الـ business logic بدون HTTP.

3. نمط المراقب (Observer Pattern) — التأثيرات الجانبية (side effects) بعيدة عن الـ main logic:

✅ معه:    createOrder() → ينشر event → emailService يسمع → يرسل email

الفايدة: تضيف side effects جديدة بدون ما تلمس الـ main function.

Documentation: JSDoc للـ public functions بس. ما تكتب comments تشرح "شنو يسوي" الكود — الكود نفسه المفروض يوضّح هذا. اكتب "ليش" بدل "شنو".