Skip to content

Latest commit

 

History

History
156 lines (114 loc) · 8.98 KB

README.md

File metadata and controls

156 lines (114 loc) · 8.98 KB

ملخص الكود النظيف 📖✨

مرحبًا بك في مستودع ملخص الكود النظيف! هذا الدليل هو نسخة مختصرة من كتاب روبرت سي. مارتن الشهير "كود نظيف: دليل لإتقان تطوير البرمجيات المرنة". سواء كنت مطورًا محترفًا أو مبتدئًا في البرمجة، سيساعدك هذا الملخص في فهم المبادئ الأساسية لكتابة كود نظيف، قابل للصيانة، وفعال. 💻🚀


هذا المحتوى متوفر بلغات أخرى


جدول المحتويات 📚

  1. أهمية الكود النظيف
  2. كيفية كتابة كود نظيف
  3. الممارسات التفصيلية
  4. الخاتمة

1. أهمية الكود النظيف 🧹

لماذا الكود النظيف مهم؟

  • التأثير التجاري: الكود السيئ يؤدي إلى تأخير المشاريع، وزيادة التكاليف، وأحيانًا فشل الشركات. 🚨
  • التكلفة الإجمالية للملكية: الكود غير المنظم يجعل تطوير الميزات الجديدة وإصلاح الأخطاء أمرًا صعبًا، مما قد يؤدي إلى إعادة كتابة النظام بالكامل. 💸
  • المسؤولية المهنية: يجب على المطورين إعطاء الأولوية لكتابة كود نظيف حتى في ظل ضغوط المواعيد النهائية. 🛠️

الفكرة الأساسية

"الكود النظيف لا يعني فقط أن يعمل، بل يجب أن يكون سهل الفهم والصيانة والتطوير."


2. كيفية كتابة كود نظيف ✍️

فن الكود النظيف

  • فن أم علم؟ كتابة الكود النظيف تشبه الفن، حيث تحتاج إلى مهارة تقنية وإحساس جمالي بالكود. 🎨
  • المبادئ الأساسية:
    • الوضوح: يجب أن يكون الكود سهل القراءة والفهم. 📖
    • البساطة: تجنب التعقيد غير الضروري. 🧩
    • التعبيرية: يجب أن يعبر الكود عن نية المبرمج بوضوح. 💡
    • المسؤولية الواحدة: كل دالة أو كائن يجب أن يؤدي مهمة واحدة فقط. 🎯

3. الممارسات التفصيلية 🛠️

أسماء ذات معنى 🏷️

  • يجب أن تعبر عن النية: يجب أن توضح أسماء المتغيرات والدوال والكائنات وظيفتها بوضوح.
    • ❌ خطأ: int d;
    • ✅ صحيح: int daysSinceCreation;
  • تجنب التضليل: لا تستخدم أسماء غامضة أو مضللة.
  • قابلة للنطق والبحث: يجب أن تكون الأسماء سهلة النطق والبحث في الكود.
  • لا تستخدم التشفير والبادئات: الأدوات الحديثة تجعل هذه الأمور غير ضرورية.

الدوال 🔄

  • صغيرة ومركزة: يجب ألا تتجاوز الدوال 20 سطرًا إن أمكن.
    • ❌ خطأ: دالة تمتد لصفحات كاملة.
    • ✅ صحيح: دالة قصيرة ذات هدف واضح.
  • تفعل شيئًا واحدًا فقط: لا يجب أن تقوم الدالة بأكثر من مهمة واحدة.
  • استخدام أسماء وصفية: يجب أن تعكس أسماء الدوال وظيفتها بوضوح.
  • تجنب استخدام معاملات العلم (Boolean): لأنها قد تشير إلى أن الدالة تقوم بأكثر من مهمة.
  • فصل الأوامر عن الاستعلامات: يجب أن تقوم الدوال إما بتنفيذ أمر أو إرجاع قيمة، ولكن ليس الاثنين معًا.

التعليقات 🗣️

  • استخدمها باعتدال: لا ينبغي استخدام التعليقات لتعويض الكود السيئ.
  • التعليقات الجيدة:
    • تعليقات قانونية (مثل حقوق النشر) 📜
    • توضيح الكود المعقد 🧐
    • تحذيرات حول العواقب ⚠️
    • ملاحظات TODO ✅
    • توثيق الـ API 📚
  • التعليقات السيئة:
    • التعليقات الزائدة أو الواضحة جدًا 🙄
    • التعليقات الخاطئة أو المضللة ❌
    • التعليقات الإلزامية لكل دالة 🚫
    • تعليق الكود بدلاً من حذفه ❌

التنسيق 🎨

  • التنسيق العمودي: استخدم المسافات والفواصل لجعل الكود أكثر وضوحًا.
  • التنسيق الأفقي: استخدم المسافات حول المشغلين، وقم بمحاذاة الكود لجعله أكثر قابلية للقراءة.
  • اعتماد قواعد موحدة للفريق: لضمان الاتساق.

الكائنات وهياكل البيانات 🧱

  • إخفاء البيانات: لا تعرض تفاصيل التنفيذ بل وفر واجهات نظيفة.
  • قانون ديمتر: لا ينبغي للوحدات البرمجية التفاعل إلا مع المتعاونين المباشرين فقط.
  • الفرق بين الكائنات وهياكل البيانات: الكائنات تغلف البيانات وتوفر سلوكًا، بينما هياكل البيانات تعرض البيانات فقط.

معالجة الأخطاء ⚠️

  • استخدم الاستثناءات: للتعامل مع الأخطاء بفعالية.
  • وفر سياقًا للأخطاء: اجعل الرسائل واضحة وسهلة التتبع.
  • تجنب إرجاع Null: استخدم كائنات خاصة أو استثناءات بدلاً من ذلك.

الحدود 🌐

  • استخدم الطبقات المغلفة: لعزل الكود عن المكونات الخارجية.
  • اختبر المكتبات الخارجية: لضمان توافقها مع النظام.

الاختبارات الوحدوية 🧪

  • قواعد TDD الثلاثة:
    1. اكتب اختبارًا يفشل قبل كتابة الكود. ✅
    2. اكتب فقط الكود الكافي لجعل الاختبار ينجح.
    3. حسن الكود مع الحفاظ على نجاح الاختبار.
  • خصائص الاختبارات الجيدة:
    • سريعة: يجب أن تنفذ بسرعة. 🏃‍♂️
    • مستقلة: لا تعتمد على اختبارات أخرى.
    • قابلة للتكرار: تعطي نفس النتيجة في كل مرة.
    • تتحقق ذاتيًا: يجب أن يكون الإخراج واضحًا (نجاح/فشل).

الفئات 🏛️

  • صغيرة ومركزة: يجب أن تلتزم بمبدأ المسؤولية الواحدة.
  • التغليف: اجعل المتغيرات والوظائف مسودة (private).
  • مبدأ الانفتاح/الإغلاق: اجعل الفئات قابلة للتوسيع دون تعديلها.

الأنظمة 🏗️

  • فصل الاهتمامات: اجعل كل مكون مسؤولًا عن جزء معين.
  • حقن التبعيات: لتسهيل الاختبار والتطوير.
  • استخدم لغات خاصة بالمجال (DSLs): لجعل الكود أكثر توافقًا مع المتطلبات.

التزامن 🧵

  • التحديات: التزامن معقد وقد يؤدي إلى أخطاء مثل السباق والجمود.
  • مبادئ الحماية:
    • حصر البيانات المشتركة: لتقليل التداخل.
    • استخدام نسخ من البيانات: لتجنب المشاكل.
    • تقليل المناطق المتزامنة: لجعل الكود أكثر كفاءة.
    • اختبار التزامن: لكشف الأخطاء المحتملة.

4. الخاتمة

"الكود النظيف يجعل البرمجيات سهلة الفهم والصيانة، وهو مفتاح النجاح في أي مشروع برمجي." 🚀

روابط مفيدة