مدونة الويب 2.0

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

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

March 2, 2009 - الاثنين 07 ربيع الأول 1430 التصنيف: كتب

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

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

قرأت كتاب 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 الجزء الأول

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

  1. عمرو فهمي: March 2, 2009 - الاثنين 07 ربيع الأول 1430 في 2:01 ص

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

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

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

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


  2. خالد: March 2, 2009 - الاثنين 07 ربيع الأول 1430 في 10:08 ص

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

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


  3. sfsf: March 5, 2009 - الخميس 10 ربيع الأول 1430 في 3:30 م

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


  4. خالد: March 5, 2009 - الخميس 10 ربيع الأول 1430 في 4:32 م

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

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


  5. عمر: March 6, 2009 - الجمعة 11 ربيع الأول 1430 في 9:02 ص

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

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

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

    مع الموظفين

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

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


  6. خالد: March 6, 2009 - الجمعة 11 ربيع الأول 1430 في 9:48 ص

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

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


  7. Memo: December 10, 2010 - الجمعة 05 محرم 1432 في 9:15 م

    اﻷخ خالد
    جزاك الله خيراً على اﻹشارة إلى هذا الكتاب,
    أريد إن أذنت لي أن أنصح في هذه الزاوية عن موضوع هام, وأعتقده متعلق إلى حد ما بموضوع ال Clean Code وهو مايخص ال Design Patterns أو نماذج التصميم.
    إستخدام نماذج التصميم في كتابة البرامج هام جداً, فهي عبارة عن حلول لمشاكل تم حلها مسبقاً من قبل الخبراء.
    من أوائل من ألف عن الموضوع هم مايعرفون ب “Gang of Four” عنوان الكتاب: Design Patterns: Elements of Reusable Object-Oriented Software
    وهنا أنصح بقراءة كتاب:
    Head First Design Patterns
    والذي يتميز بعرض الموضوع بشكل ممتع ومبسط,
    وهو واحد من سلسلة “Head First” الممتعة والمفيدة.


  8. خالد: December 10, 2010 - الجمعة 05 محرم 1432 في 10:33 م

    بالفعل كلامك صحيح، والسلسلة ممتعة للغاية.


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

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

  • الأكثر قراءة
  • الأحدث
  • الأرشيف
  • تعلم الكيك وتطوير المواقع بالبيت
  • أفضل الأدوات لرفع الملفات
  • تنظيم الوقت البرمجي
  • مقدمة في CakePHP
  • أفكار ومواقع ويب 2 شهيرة
  • لماذا غوغل شريرة!
  • الخطوط العربية
  • هل تريد أن تكسب 1000 دولار؟
  • تصميم قاعدة البيانات
  • مواقع عربية بالدروبال
    1. كتب مطلوبة
    2. إصلاح علة أمنية في دروبال 7.3 و 7.4
    3. حل المشكلة أم الترقيع؟
    4. مراجعة كتاب 50 Tips and Tricks for MongoDB Developers
    5. تعريب الوحدات الإضافية
    6. البرامج العربية
    7. تعريب الدروبال 7 – العد التنازلي للنواة
    8. تعريب الدروبال 7 – اليوم الثالث
    9. تعريب الدروبال 7 – اليوم الثاني
    10. تعريب الدروبال 7 – اليوم اﻷول
    11. تعريب الدروبال 7
    1. يونيو 2011
    2. مايو 2011
    3. أبريل 2011
    4. مارس 2011
    5. فبراير 2011
    6. يناير 2011
    7. ديسمبر 2010
    8. نوفمبر 2010
    9. أكتوبر 2010
    10. أغسطس 2010
    11. مارس 2010
    12. فبراير 2010
    13. يناير 2010
    14. ديسمبر 2009
    15. سبتمبر 2009
    16. أغسطس 2009
    17. يوليو 2009
    18. يونيو 2009
    19. مايو 2009
    20. مارس 2009
    21. فبراير 2009
    22. يناير 2009
    23. ديسمبر 2008
    24. نوفمبر 2008
    25. أكتوبر 2008
    26. سبتمبر 2008
    27. أغسطس 2008
    28. يوليو 2008
    29. يونيو 2008
    • اشترك بآخر الأخبار RSS

      Feeds Counter

      أو

    • أشارك بتعريب دروبال 7

    • أراجع كتب Oreilly

      I review for the O'Reilly Blogger Review Program
    • أفضل هدية تقدمها لي

    • تقنية الطماطم

      I Use the Pomodoro Technique
    • عشرون عام لمشروع اللينكس

      I'll be celebrating 20 years of Linux with
The Linux Foundation!
    • وسوم

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

    حول المدونة

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

    عروض العمل

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

    تواصل معي

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

    Switch to our mobile site