مرحبًا بك في مستودع ملخص الكود النظيف! هذا الدليل هو نسخة مختصرة من كتاب روبرت سي. مارتن الشهير "كود نظيف: دليل لإتقان تطوير البرمجيات المرنة". سواء كنت مطورًا محترفًا أو مبتدئًا في البرمجة، سيساعدك هذا الملخص في فهم المبادئ الأساسية لكتابة كود نظيف، قابل للصيانة، وفعال. 💻🚀
- التأثير التجاري: الكود السيئ يؤدي إلى تأخير المشاريع، وزيادة التكاليف، وأحيانًا فشل الشركات. 🚨
- التكلفة الإجمالية للملكية: الكود غير المنظم يجعل تطوير الميزات الجديدة وإصلاح الأخطاء أمرًا صعبًا، مما قد يؤدي إلى إعادة كتابة النظام بالكامل. 💸
- المسؤولية المهنية: يجب على المطورين إعطاء الأولوية لكتابة كود نظيف حتى في ظل ضغوط المواعيد النهائية. 🛠️
"الكود النظيف لا يعني فقط أن يعمل، بل يجب أن يكون سهل الفهم والصيانة والتطوير." ✨
- فن أم علم؟ كتابة الكود النظيف تشبه الفن، حيث تحتاج إلى مهارة تقنية وإحساس جمالي بالكود. 🎨
- المبادئ الأساسية:
- الوضوح: يجب أن يكون الكود سهل القراءة والفهم. 📖
- البساطة: تجنب التعقيد غير الضروري. 🧩
- التعبيرية: يجب أن يعبر الكود عن نية المبرمج بوضوح. 💡
- المسؤولية الواحدة: كل دالة أو كائن يجب أن يؤدي مهمة واحدة فقط. 🎯
- يجب أن تعبر عن النية: يجب أن توضح أسماء المتغيرات والدوال والكائنات وظيفتها بوضوح.
- ❌ خطأ:
int d;
- ✅ صحيح:
int daysSinceCreation;
- ❌ خطأ:
- تجنب التضليل: لا تستخدم أسماء غامضة أو مضللة.
- قابلة للنطق والبحث: يجب أن تكون الأسماء سهلة النطق والبحث في الكود.
- لا تستخدم التشفير والبادئات: الأدوات الحديثة تجعل هذه الأمور غير ضرورية.
- صغيرة ومركزة: يجب ألا تتجاوز الدوال 20 سطرًا إن أمكن.
- ❌ خطأ: دالة تمتد لصفحات كاملة.
- ✅ صحيح: دالة قصيرة ذات هدف واضح.
- تفعل شيئًا واحدًا فقط: لا يجب أن تقوم الدالة بأكثر من مهمة واحدة.
- استخدام أسماء وصفية: يجب أن تعكس أسماء الدوال وظيفتها بوضوح.
- تجنب استخدام معاملات العلم (Boolean): لأنها قد تشير إلى أن الدالة تقوم بأكثر من مهمة.
- فصل الأوامر عن الاستعلامات: يجب أن تقوم الدوال إما بتنفيذ أمر أو إرجاع قيمة، ولكن ليس الاثنين معًا.
- استخدمها باعتدال: لا ينبغي استخدام التعليقات لتعويض الكود السيئ.
- التعليقات الجيدة:
- تعليقات قانونية (مثل حقوق النشر) 📜
- توضيح الكود المعقد 🧐
- تحذيرات حول العواقب
⚠️ - ملاحظات TODO ✅
- توثيق الـ API 📚
- التعليقات السيئة:
- التعليقات الزائدة أو الواضحة جدًا 🙄
- التعليقات الخاطئة أو المضللة ❌
- التعليقات الإلزامية لكل دالة 🚫
- تعليق الكود بدلاً من حذفه ❌
- التنسيق العمودي: استخدم المسافات والفواصل لجعل الكود أكثر وضوحًا.
- التنسيق الأفقي: استخدم المسافات حول المشغلين، وقم بمحاذاة الكود لجعله أكثر قابلية للقراءة.
- اعتماد قواعد موحدة للفريق: لضمان الاتساق.
- إخفاء البيانات: لا تعرض تفاصيل التنفيذ بل وفر واجهات نظيفة.
- قانون ديمتر: لا ينبغي للوحدات البرمجية التفاعل إلا مع المتعاونين المباشرين فقط.
- الفرق بين الكائنات وهياكل البيانات: الكائنات تغلف البيانات وتوفر سلوكًا، بينما هياكل البيانات تعرض البيانات فقط.
- استخدم الاستثناءات: للتعامل مع الأخطاء بفعالية.
- وفر سياقًا للأخطاء: اجعل الرسائل واضحة وسهلة التتبع.
- تجنب إرجاع Null: استخدم كائنات خاصة أو استثناءات بدلاً من ذلك.
- استخدم الطبقات المغلفة: لعزل الكود عن المكونات الخارجية.
- اختبر المكتبات الخارجية: لضمان توافقها مع النظام.
- قواعد TDD الثلاثة:
- اكتب اختبارًا يفشل قبل كتابة الكود. ✅
- اكتب فقط الكود الكافي لجعل الاختبار ينجح.
- حسن الكود مع الحفاظ على نجاح الاختبار.
- خصائص الاختبارات الجيدة:
- سريعة: يجب أن تنفذ بسرعة. 🏃♂️
- مستقلة: لا تعتمد على اختبارات أخرى.
- قابلة للتكرار: تعطي نفس النتيجة في كل مرة.
- تتحقق ذاتيًا: يجب أن يكون الإخراج واضحًا (نجاح/فشل).
- صغيرة ومركزة: يجب أن تلتزم بمبدأ المسؤولية الواحدة.
- التغليف: اجعل المتغيرات والوظائف مسودة (private).
- مبدأ الانفتاح/الإغلاق: اجعل الفئات قابلة للتوسيع دون تعديلها.
- فصل الاهتمامات: اجعل كل مكون مسؤولًا عن جزء معين.
- حقن التبعيات: لتسهيل الاختبار والتطوير.
- استخدم لغات خاصة بالمجال (DSLs): لجعل الكود أكثر توافقًا مع المتطلبات.
- التحديات: التزامن معقد وقد يؤدي إلى أخطاء مثل السباق والجمود.
- مبادئ الحماية:
- حصر البيانات المشتركة: لتقليل التداخل.
- استخدام نسخ من البيانات: لتجنب المشاكل.
- تقليل المناطق المتزامنة: لجعل الكود أكثر كفاءة.
- اختبار التزامن: لكشف الأخطاء المحتملة.
"الكود النظيف يجعل البرمجيات سهلة الفهم والصيانة، وهو مفتاح النجاح في أي مشروع برمجي." 🚀