Facebook Pixel
Searching...
العربية
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Clean Code

Clean Code

A Handbook of Agile Software Craftsmanship
بواسطة Robert C. Martin 2008 464 صفحات
4.37
22k+ تقييمات
استمع

النقاط الرئيسية

1. اكتب كودًا نظيفًا قابلًا للقراءة والصيانة

القياس الوحيد الصحيح لجودة الكود: WTFs/دقيقة

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

قابلية الصيانة تمكّن التطور. الكود الذي يصعب تغييره يصبح عبئًا. صمم كودك ليكون مرنًا ووحدويًا حتى يتكيف مع المتطلبات المتغيرة. اتبع مبادئ مثل DRY (لا تكرر نفسك) وSOLID لإنشاء أنظمة مترابطة بشكل ضعيف وعالية التماسك. قم بإعادة هيكلة الكود بلا رحمة لتحسين هيكله دون تغيير سلوكه.

الكود النظيف يعود بالنفع. على الرغم من أن كتابة كود نظيف تتطلب جهدًا أكبر في البداية، إلا أنها توفر وقتًا كبيرًا وآلامًا في المستقبل. الكود النظيف أسهل في التصحيح والتوسيع والصيانة. يمكّن المطورين من العمل بكفاءة أكبر ويقلل من خطر إدخال أخطاء أثناء التغييرات. اجعل الكود النظيف جزءًا أساسيًا من ممارستك في التطوير.

2. اتبع تقاليد التسمية ذات المعنى

يجب أن يجيب اسم المتغير أو الدالة أو الفئة على جميع الأسئلة الكبيرة. يجب أن يخبرك لماذا يوجد، وماذا يفعل، وكيف يتم استخدامه.

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

  • سيئ: d (الوقت المنقضي بالأيام)
  • جيد: elapsedTimeInDays

كن متسقًا ودقيقًا. استخدم تقاليد تسمية متسقة في جميع أنحاء قاعدة الكود الخاصة بك. كن دقيقًا لتجنب الغموض - على سبيل المثال، استخدم تمييزات ذات معنى مثل getActiveAccounts() وgetActiveAccountInfo(). تجنب الترميزات أو البادئات التي تضيف ضوضاء دون قيمة. يجب أن تكون أسماء الفئات أسماءً، وأسماء الدوال أفعالًا.

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

3. احتفظ بالدوال صغيرة ومركزة

يجب أن تقوم الدوال بشيء واحد. يجب أن تقوم به بشكل جيد. يجب أن تقوم به فقط.

الصغر هو الجمال. يجب أن تكون الدوال صغيرة - عادةً ما تتراوح بين 5-10 أسطر. يجب أن تتناسب مع شاشة واحدة وأن تكون مفهومة على الفور. استخرج الكود إلى دوال مساعدة ذات أسماء جيدة بدلاً من كتابة دوال طويلة ومعقدة. الدوال الصغيرة أسهل في الفهم والاختبار والصيانة.

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

  • مستويات متعددة من التجريد
  • أقسام أو كتل كود متعددة
  • عدد كبير من المعلمات

احتفظ بمستوى واحد من التجريد. يجب أن تكون العبارات داخل الدالة جميعها على نفس مستوى التجريد. لا تخلط بين المنطق عالي المستوى والتفاصيل منخفضة المستوى. استخرج العمليات منخفضة المستوى إلى دوال منفصلة. هذا يحسن الوضوح من خلال الحفاظ على تركيز الدوال وبساطتها المفاهيمية.

4. مارس التنسيق والتنظيم الصحيحين

تنسيق الكود يتعلق بالتواصل، والتواصل هو الأمر الأول الذي يجب على المطور المحترف الاهتمام به.

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

  • التباعد الصحيح
  • وضع الأقواس بشكل متسق
  • فواصل أسطر منطقية
  • فراغ مناسب

نظم الكود بشكل منطقي. اجمع الكود ذي الصلة معًا وافصل الكود غير ذي الصلة. استخدم أسطر فارغة لإنشاء فواصل "فقرة" بين الأقسام المنطقية. ضع الدوال ذات الصلة بالقرب من بعضها. احتفظ بالملفات مركزة على مفهوم أو مكون واحد. قسم الملفات الكبيرة إلى ملفات أصغر وأكثر تركيزًا عند الاقتضاء.

اتبع التقاليد القياسية. التزم بالتقاليد القياسية للغتك ومجتمعك. هذا يجعل كودك أكثر ألفة وسهولة في الوصول إلى المطورين الآخرين. على سبيل المثال، في Java:

  • تستخدم أسماء الفئات PascalCase
  • تستخدم أسماء الدوال camelCase
  • تستخدم الثوابت ALL_CAPS

5. إدارة التبعيات وتجنب التكرار

قد يكون التكرار هو جذر كل الشرور في البرمجيات.

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

  • كتل كود متطابقة
  • خوارزميات مشابهة مع اختلافات طفيفة
  • سلاسل switch/case أو if/else مكررة

إدارة التبعيات بعناية. قلل من التبعيات بين الوحدات لتقليل الترابط. استخدم حقن التبعية وعكس التحكم لجعل الكود أكثر وحدوية وقابلية للاختبار. اتبع مبدأ عكس التبعية - اعتمد على التجريدات، وليس على التحديدات. هذا يجعل كودك أكثر مرونة وأسهل في التغيير.

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

  • كائنها الخاص
  • الكائنات الممررة كمعلمات
  • الكائنات التي تنشئها
  • كائناتها المكونة المباشرة

6. تعامل مع الأخطاء برشاقة

معالجة الأخطاء مهمة، ولكن إذا كانت تعيق المنطق، فهي خاطئة.

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

  • أنشئ رسائل خطأ مفيدة
  • قدم سياقًا مع الاستثناءات
  • عرّف فئات الاستثناءات بناءً على احتياجات المستدعي

لا ترجع null. إرجاع null يؤدي إلى استثناءات المؤشر null ويعكر صفو الكود بفحوصات null. بدلاً من ذلك:

  • ارجع مجموعات فارغة بدلاً من null للقوائم
  • استخدم نمط الكائن null
  • استخدم Optional في Java أو Maybe في اللغات الوظيفية

اكتب جمل try-catch-finally أولاً. ابدأ بـ try-catch-finally عند كتابة كود قد يرمي استثناءات. هذا يساعد في تحديد النطاق والتوقعات للكود المستدعي. يضمن إدارة الموارد بشكل صحيح وإطلاقها، حتى في سيناريوهات الأخطاء.

7. اكتب اختبارات وحدات شاملة

كود الاختبار مهم تمامًا مثل كود الإنتاج.

اتبع القوانين الثلاثة لتطوير البرمجيات المدفوعة بالاختبار (TDD). تحسين تطوير البرمجيات المدفوعة بالاختبار (TDD) لجودة الكود والتصميم:

  1. اكتب اختبارًا فاشلاً قبل كتابة أي كود إنتاج
  2. اكتب فقط ما يكفي من الاختبار لإظهار الفشل
  3. اكتب فقط ما يكفي من كود الإنتاج لتمرير الاختبار

احتفظ بالاختبارات نظيفة وقابلة للصيانة. طبق نفس معايير جودة الكود على اختباراتك كما هو الحال مع كود الإنتاج. قم بإعادة هيكلة وتحسين كود الاختبار بانتظام. الاختبارات المنظمة جيدًا تعمل كوثائق وتمكن من إعادة هيكلة كود الإنتاج بلا خوف.

استهدف تغطية اختبار شاملة. اكتب اختبارات تغطي الحالات الحدية، وظروف الحدود، وسيناريوهات الأخطاء - وليس فقط المسار السعيد. استخدم أدوات تغطية الكود لتحديد الفجوات في تغطية الاختبار. تذكر أن 100% تغطية لا تضمن كودًا خاليًا من الأخطاء، لكنها توفر الثقة في إعادة الهيكلة والتغييرات.

8. قم بإعادة هيكلة الكود باستمرار

اترك المخيم أنظف مما وجدته.

قم بإعادة الهيكلة عند الفرصة. حسن هيكل الكود كلما عملت على جزء من الكود. اتبع قاعدة الكشافة: اترك الكود أفضل مما وجدته. التحسينات الصغيرة والتدريجية تتراكم مع مرور الوقت وتمنع تدهور الكود. تشمل تقنيات إعادة الهيكلة الشائعة:

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

قم بإعادة الهيكلة بأمان مع الاختبارات. تأكد دائمًا من وجود مجموعة قوية من الاختبارات قبل إعادة الهيكلة. قم بإجراء تغييرات صغيرة وتدريجية وجرّب الاختبارات بشكل متكرر. هذا يمنحك الثقة بأن تغييراتك لا تكسر الوظائف الحالية. استخدم أدوات إعادة الهيكلة الآلية عند توفرها لتقليل خطر إدخال أخطاء.

وازن بين إعادة الهيكلة وتقديم القيمة. على الرغم من أن إعادة الهيكلة المستمرة مهمة، لا تدعها تشل التقدم. استهدف "الجيد بما فيه الكفاية" بدلاً من الكمال. ركز جهود إعادة الهيكلة على أكثر المناطق إشكالية أو التي تتغير بشكل متكرر في الكود. تواصل مع أصحاب المصلحة حول قيمة إعادة الهيكلة لضمان الدعم لتحسين الكود المستمر.

9. طبق مبادئ البرمجة الكائنية والوظيفية

تخفي الكائنات بياناتها خلف التجريدات وتعرض دوالًا تعمل على تلك البيانات. تكشف الهياكل البيانية عن بياناتها وليس لديها دوال ذات معنى.

استخدم مبادئ البرمجة الكائنية بحكمة. طبق مبادئ مثل التغليف، والوراثة، والتعددية الشكلية لإنشاء تصاميم مرنة ووحدوية. اتبع مبادئ SOLID:

  • مبدأ المسؤولية الواحدة
  • مبدأ الفتح والإغلاق
  • مبدأ استبدال ليسكوف
  • مبدأ تقسيم الواجهات
  • مبدأ عكس التبعية

استفد من مفاهيم البرمجة الوظيفية. حتى في اللغات الكائنية، يمكن أن تؤدي تقنيات البرمجة الوظيفية إلى كود أنظف:

  • دوال نقية بدون آثار جانبية
  • بيانات غير قابلة للتغيير
  • دوال من الدرجة العليا
  • تركيب الدوال

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

10. اعتبر التزامن بعناية

التزامن هو استراتيجية فصل. يساعدنا على فصل ما يتم إنجازه عن متى يتم إنجازه.

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

  • حالات السباق
  • الإغلاق
  • الإشارات المفقودة
  • مشاكل رؤية الذاكرة

افصل مخاوف التزامن. احتفظ بكودك المتعلق بالتزامن منفصلًا عن الكود الآخر. هذا يجعل من الأسهل التفكير فيه واختباره. استخدم التجريدات مثل Executors وFutures وActors لإدارة التزامن بدلاً من العمل مع خيوط خام.

فضل عدم القابلية للتغيير والدوال النقية. الكائنات غير القابلة للتغيير والدوال النقية آمنة بطبيعتها للخيوط. إنها تقضي على العديد من مشكلات التزامن من خلال تجنب الحالة القابلة للتغيير المشتركة. عندما تكون الحالة القابلة للتغيير ضرورية، استخدم تقنيات التزامن المناسبة واعتبر استخدام المتغيرات الذرية أو المجموعات المتزامنة.

آخر تحديث::

مراجعات

4.37 من 5
متوسط 22k+ التقييمات من Goodreads و Amazon.

كتاب "الكود النظيف" يتلقى في الغالب تقييمات إيجابية لمبادئه حول كتابة كود قابل للقراءة والصيانة. يقدّر القراء النصائح العملية المتعلقة بالتسمية، والدوال، والاختبار. ومع ذلك، فإن تركيز الكتاب على لغة الجافا وبعض الإرشادات الصارمة تعتبر من الانتقادات الشائعة. يعتبره الكثيرون قراءة أساسية للمطورين، على الرغم من أن بعضهم يجدونه أقل فائدة للمبرمجين ذوي الخبرة. تُشاد دراسات الحالة وأمثلة إعادة الهيكلة من قبل البعض، بينما ينتقدها آخرون باعتبارها مبالغ فيها. بشكل عام، يتفق المراجعون على أن الكتاب يقدم رؤى قيمة حول جودة الكود، حتى وإن لم تكن جميع الاقتراحات قابلة للتطبيق بشكل عالمي.

عن المؤلف

روبرت سيسيل مارتن، المعروف باسم العم "بوب"، هو مهندس برمجيات ومستشار مشهور. يدعو إلى أساليب التطوير المرنة ويشغل منصب رئيس شركة Object Mentor Inc. تمتد خبرة مارتن لتشمل التصميم القائم على الكائنات، والأنماط، ولغة UML، وبرمجة eXtreme. لقد عمل مع عملاء من جميع أنحاء العالم، حيث شارك معرفته من خلال الاستشارات والمشاركة في الفعاليات. شغل مارتن منصب رئيس تحرير تقرير C++ من عام 1996 إلى عام 1999. يُعتبر شخصية بارزة في مجتمع تطوير البرمجيات، حيث يقدم عروضًا في المؤتمرات والمعارض الدولية بشكل متكرر. تمتد تأثيراته إلى ما هو أبعد من عمله الاستشاري من خلال كتبه ومقالاته حول حرفة البرمجيات وأفضل الممارسات.

Other books by Robert C. Martin

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
Unlock Unlimited Listening
🎧 Listen while you drive, walk, run errands, or do other activities
2.8x more books Listening Reading
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Jan 25,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →