المشكلة: كود يعمل، لكن يصعب تطويره
عندما بنيت موقعي الشخصي، كان الهدف الأول أن يعمل. وقد عمل فعلاً. لكن مع كل ميزة جديدة أردت إضافتها، كنت أواجه المشكلة نفسها: أين اعدل؟
كان لديّ ملف واحد يتجاوز 1200 سطر، يتولى كل شيء تقريباً. منطق الأعمال مخلتط مع استدعاءات قاعدة البيانات، والتحقق من المدخلات مبعثر بين الواجهة والخادم. الكود كان "يمشي الحال"، لكنه صار هشّاً: أي تعديل بسيط قد يكسر شيئاً في مكان بعيد.
أدركت أن المشكلة ليست في الميزات، بل في البنية.
الحل: Clean Architecture
Clean Architecture مبدأ معماري في جوهره: افصل كودك الى طبقات، كل طبقة لها مسؤولية واحدة واضحة، والاعتماد يتّجه للادخال فقط — الطبقات الخارجية تعرف الداخلية ، لا العكس.
قسّمت المشروع الى أربع طبقات:
الطبقة الأساسية (Domain): المنطق الجوهري والكيانات، مستقلة تماماً، لا تعرف شيئاً عن قاعدة البيانات أو الواجهة.
طبقة حالات الاستخدام(Use Cases): العمليات التي يقوم بها النظام — نشر محتوى، تسجيل دخول، حفظ اعدادات . تستدعي المنطق الأساسي، ولا تحوي تفاصيل تقنية.
طبقة البنية التحتية (Infrastructure): التعامل مع العالم الخارjي — قاعدة البيانات، البريد، بوت تلجرام، التخزين . كل واحدة خلف واجهة واضحة.
طبقة العرض (Presentation): الواجهة ومسارات الـ API، بلا أي منطق أعمال — مجرد غلاف رفيع يستقبل الطلب ويردّ.
التنفيذ: أربع مراحل آمنة
أهم قرار اتخذته لم يكن تقنياً، بل منهجياً: طبّقت التغيير على أربع مراحل تدريجية، لا دفعة واحدة.
المرحلة الأولى: استخراج طبقة حالات الاستخدامات المشتركة، لإزالة التكرار بين البوت والواجهة.
المرحلة الثانية: فصل البنية التحتية إلى وحدات منفصلة (قاعدة بيانات، بريد، مصادقة)، مع إبقاء نقاط استيراد متوافقة حتى لا ينكسر شيء.
المرحلة الثالثة: فصل مستودعات البيانات عن منطق التحويل.
المرحلة الرابعة: تفكيك البوت العملاق — من 1200 سطر في ملف واحد، إلى موجّه صغير يوزع على ثماني وحدات متخصصة.
بعد كل مرحلة، كنت أبني المشروع وأختبره وأنشره قبل الانتقال للتالية. لم اعد كتابة كل شيء دفعة واحدة أبداً.
الدرس الأهم
إعادة الهيكلة الشاملة على مشروع حيّ دفعة واحدة هي وصفة للكارثة. لو انكسر شيء، يصعب معرفة أي تغيير سبّبه.
التحسين التدريجي الآمن — خطوة، اختبار، نشر، ثم الخطوة التالية — يحميك. كل مرحلة صغيرة قابلة للتراجع، وكل خطأ معزول.
الخلاصة
الكود النظيف ليس ترفاً جمالياً. هو الفرق العملي بين مشروع تستطيع تطويره بثقة بعد عام، ومشروع تخشى أن تلمسه.
Clean Architecture لم تجعل موقعي يبدو مختلفاً للزائر. لكنها جعلته — بالنسبة لي كمطوّر — نظاماً أفهمه، وأبني عليه. وهذا، في النهاية، ما يميّز الكود الذي يدوم.
