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

الكود النظيف

الدرس 18 من 20

الهدف

بنهاية الدرس تقدر تأخذ 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 تشرح "شنو يسوي" الكود — الكود نفسه المفروض يوضّح هذا. اكتب "ليش" بدل "شنو".

محتاج مساعدة؟ راسلنا على mj@shakesbeard.net