مدونة الويب 2.0

  • الرئيسية
  • تعريف بالمدونة
  • المصادر
  • تواصل معي
  • أخبار المدونة
  • أفكار
  • استبيان
  • برمجة
  • تصميم
  • تطوير
  • كتب
  • مدونات عربية
  • مهمات
  • مواقع

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

2, مارس 2009 التصنيف: كتب

السلام عليكم،

مشاغل الجامعة والعمل والعديد من الأمور شغلتني عن المدونة لمدة لا بأس بها، ولكن إن شاء الله سأحاول الالتزام أكثر.

قرأت كتاب Clean Code من العم بوب كما يسمي نفسه، العم بوب أو Robert C.Martin من أشهر المبرمجين على مستوى العالم ومن مؤسسي الآجايل (Agile)، لذلك كلما تجد كتاباً له فحاول أن تقرأه.

غلاف الكتاب


الكتاب أسلوبه جميل حيث يأتيك بمثال (كود أو نص مصدري) ويحاول تطبيق مبادىء “الكود النظيف” عليه فيحسنه ويتكلم عن الفرق قبل وبعد التعديلات سواء في الأداء أو سهولة الكود، أيضاً يسرد عليك العديد من القصص الواقعية التي مرت على رأس هذا المبرمج العجوز لتبقى عالقة في ذهنك.

أمثلة النص المصدري في الكتاب مكتوبة بالجافا ولكن اعتقد كل مبرمج سيفهم هذه الأمثلة فهي تشبه كثيراً الـ #C وحتى ++C.

الفائدة في الكتاب كبيرة ويجب أن يقرأه كل مبرمج، سأسرد أبرز النقاط التي شدتني:

  1. التابع دوماً يجب أن يؤدي مهمة واحدة، مثلاً تابع (دالة) لإضافة مقال جديد، ينشأ اتصال بقاعدة البيانات ويدخل المعلومات إليها ويظهر رسالة بأن المقال تم حفظه، هذا التابع يؤدي أكثر من مهمة لذلك جزء هذه المهمات على عدة توابع بحيث كل تابع يؤدي مهمة واحدة فقط، بهذه الحالة يصبح نصك المصدري أفضل للفهم بشكل كبير.
  2. اكتب للمتحولات والتوابع والأصناف (الكلاسات) أسماء مفهومة للمهمة التي تقوم بها حتى لو كان الاسم طويلاً، طبعاً حاول أن يكون قصيراً ولكن عندما يقرأ الاسم أي مبرمج يفهم ماذا يؤدي هذا المتحول أو التابع.
  3. اهتم بالتعليقات بشكل كبير ولا تكتب تعليقات سخيفة أو تعليقات تحتاج لتعليقات كي تفهمها!
  4. Unit Testing من الأهمية بدرجة كبيرة، حاول أن تختبر كل شيء كي تحصل على تطبيق خالٍ من الأخطاء وقابل للتعديل دون الخوف من حدوث أخطاء نتيجة التعديلات
  5. الصنف (الكلاس) أيضاً يجب أن يؤدي مهمة واحدة وأن تكون جميع توابعه في نفس المستوى، مثلاً صنف طباعة الرسائل يأتي في أقرب طبقة للمستخدم أما صنف التعامل مع قاعدة البيانات فيأتي في طبقة منخفضة من النظام وهكذا فكل صنف يجب أن يكون في طبقة واحدة.

كتاب لا يجب أن تتركه يفلت من بين يديك وبإذن الله ستفيد منه كثيراً ولكن يوجد لي ملاحظة على الكتاب في عالم PHP ولغات السكربتنغ، المشكلة أنه عند كتابتك (كما يشدد على ذلك العم بوب) للعديد من الأصناف وكل صنف يؤدي مهمة واحدة ستحصل على عشرات الملفات وكل ملف يسبب حمل زائد على السيرفر (request) لأن هذه الأصناف الموجودة في الملفات تترجم في كل مرة يطلب أي زائر موقعك بعكس لغات الترجمة التي تترجم التطبيق مرة واحدة، لذلك حاول كتابة الأصناف ولكن لاتكثر منها لدرجة كبيرة ولاتكثر من الملفات.

شارك هذه التدوينة:
إضافة 'كتاب الكود النظيف' إلى Del.icio.usإضافة 'كتاب الكود النظيف' إلى diggإضافة 'كتاب الكود النظيف' إلى Technoratiإضافة 'كتاب الكود النظيف' إلى Stumble Uponإضافة 'كتاب الكود النظيف' إلى Google Bookmarksإضافة 'كتاب الكود النظيف' إلى FaceBookإضافة 'كتاب الكود النظيف' إلى MySpaceإضافة 'كتاب الكود النظيف' إلى Twitterإضافة 'كتاب الكود النظيف' إلى FriendFeed
الوسوم: php, كتب, نصائح
أرسل هذه التدوينة لصديق أرسل هذه التدوينة لصديق
طباعة هذه التدوينة طباعة هذه التدوينة

    إقرأ أيضاً:

    • تنقيح الكود باستخدام PDT + Xdebug
    • نصائح php الجزء الثالث
    • نصائح php الجزء الثاني
    • نصائح PHP الجزء الأول
    • محررات الـ PHP المتقدمة

6 تعليق في “كتاب الكود النظيف”

  1. عمرو فهمي: 2, مارس 2009 في 2:01 ص

    أولا شكرا لك على التعريف بهذا الكتاب وتلخيص بعض النقاط الهامة التي تختص بالدوال والكلاسيس والتى تقريبا أتفق مع معظمها
    لكن سؤالي الأول حول ما المشكلة فى انشاء ملف واحد يسمى functions يحتوي جميع الدوال التي يحتاجها النظام ولتكن هذه الدوال 500 دالة أو أكثر
    نفس الشيئ بالنسبة للكلاسيس ننشئ ملف class يحتوي جميع الكلاسيس التي نحتاجها فى البرنامج

    أتمنى اذا كان هناك عيوب لهذا الطريقة أن تخبرني بها

    أخيرا.. كثيرا ما أسمع وأقراء عن الUnit Testing لكني فى واقع الأمر لا أعرف كيف أستخدمه أو استفيد منه.. فياليتك توضح لنا ما هية هذا الشيئ

    ولك جزيل الشكر :)


  2. خالد: 2, مارس 2009 في 10:08 ص

    يا أهلاً بالأستاذ عمرو، عيب هذه الطريقة:
    1- كبر حجم الملف.
    2-لالو حدث خطأ في أحد التوابع فيستوقف الملف كله عن العمل.

    أما عن Unit Testing فقد حضرت تدوينة أقوم بوضع النقاط الأخيرة عليها وإن شاء الله غداً ستنشر :)


  3. sfsf: 5, مارس 2009 في 3:30 م

    أخى خالد لفت نظرى فى تدوينة نصائح ال php موضوع (طبقة التعامل مع قاعدة البيانات ) وفى هذه التدوينة نقطة (وضع صنف قاعدة البيانات قريبا من النظام)… ممكن مزيدا من التوضيح وكيف يمكن عمل طبقة للتعامل مع قاعدة البيانات .
    أنا أقوم بجلب البيانات عن طريق مجموعة من الدوال مخزنة عندى فى ملف … وحينما جربت وضع هذه الدوال فى كلاس وجدت العملية صارت أطول
    حيث أقوم فى كل مرة بعمل object جديد ثم إستدعاء الدالة عن طريقة فهل هناك أسلوب برمجى أفضل.


  4. خالد: 5, مارس 2009 في 4:32 م

    اهه تقصد فوائد البرمجة الغرضية التوجه!

    أهم الفوائد:
    1- يمكنك استخدام متحولات الصنف لاستخدامها بين التوابع
    2- الوراثة مهمة جداً، فمثلاً لو صنعت طبقة للتعامل مع mysql ربما فيما بعد تكتب صنف مجرد وترث منه للتعامل مع الأوراكل مثلاً!
    3- الترتيب، حيث كل صنف يوجد بداخله مجموعة توابع خاصة به، أما في الملفات فلن تعرف هذا التابع ماوظيفته.


  5. عمر: 6, مارس 2009 في 9:02 ص

    بالفعل اخي خالد كما ذكرت …… الكتاب جدا رائع

    ويستحق العرض والتنويه ……

    في شركتي اقنعت مديري السابق ان يقرأ وأن يتم عرض الامثلة بشكل جماعي

    مع الموظفين

    لا تتخيل مدى استفادتي من الكتاب

    شكرا لك …. على هذا العرض الجميل


  6. خالد: 6, مارس 2009 في 9:48 ص

    ماشاء الله خطوة أحسدك عليها!

    إقناع المدير ليس بالأمر السهل!


شاركنا برأيك؟

الرجاء الكتابة باللغة العربية الفصحى، وإذا كنت تريد كتابة سؤال حاول البحث في غوغل أولاً فغالباً ستجد عنده الخبر اليقين.

  • الأكثر قراءة
  • الأحدث
  • الأرشيف
  • تعلم الكيك وتطوير المواقع بالبيت
  • تنظيم الوقت البرمجي
  • أفكار ومواقع ويب 2 شهيرة
  • مقدمة في CakePHP
  • لماذا غوغل شريرة!
  • الخطوط العربية
  • تصميم قاعدة البيانات
  • هل تريد أن تكسب 1000 دولار؟
  • مواقع عربية بالدروبال
  • موقع الجزيرة الجديد
    1. غوغل، جوجل، كوكل أو قوقل!
    2. دروبال تعلمه بالعربي
    3. تحديثات بالجملة
    4. صفحة 404
    5. مدونة الويب 2.0 في 2010
    6. عن غيوم
    7. وحدة Scrollable Content لدروبال
    8. موقع بدون قاعدة بيانات
    9. دول العالم باللغة العربية
    10. ثيم خفيفة للفايرفوكس
    1. أغسطس 2010
    2. مارس 2010
    3. فبراير 2010
    4. يناير 2010
    5. ديسمبر 2009
    6. سبتمبر 2009
    7. أغسطس 2009
    8. يوليو 2009
    9. يونيو 2009
    10. مايو 2009
    11. مارس 2009
    12. فبراير 2009
    13. يناير 2009
    14. ديسمبر 2008
    15. نوفمبر 2008
    16. أكتوبر 2008
    17. سبتمبر 2008
    18. أغسطس 2008
    19. يوليو 2008
    20. يونيو 2008
    • اشترك بآخر الأخبار RSS

      Feeds Counter

      أو

    • الاستبيان

      هل طورت أو ساعدت بتطوير مشروع مفتوح المصدر؟

      مشاهدة النتيجة

      Loading ... Loading ...
    • أوسمة

      Ajax css IDE jQuery php SEO TinyMCE أخبار المدونة أذكار أطر العمل أفكار إدارة المحتوى إدارة محتوى إضافات استبيان الأجاكس الأمان الاختبارات الآلية الكيك برمجة تحديثات تحميل تدوينات رمضان تصميم تطوير تعريب تعلم الكيك وتطوير المواقع بالبيت تكتيك تنظيم الوقت جوائز حديث دروبال دعاية فايرفوكس فرص عمل كتب مسابقات مهمات مواقع نصائح هندسة برمجيات وورد بريس

    حول المدونة

    • جميع الحقوق محفوظة © 2008-2010 مدونة الويب 2.0.
    • يمكنك نقل المحتويات أو اقتباس أي جزء منها ويفضل ذكر المصدر.
    • من الممكن أن تساعدك خريطة الموقع.

    عروض العمل

    • يمكنك أن تناقشني حول عروض العمل للمدونات أو لمواقع الويب 2.0.
    • أيضاً يمكنك استشارتي في وضع التفاصيل لمدونة أو لفكرة مشروع جديد.
    • سيرتي الذاتية على My Linkedin Profile

    تواصل معي

    • خالد الحوراني مطور ويب 2.0
    • دمشق - سوريا
    • تابع أخباري على My Twitter account
    • أو راسلني فوراً