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 in Python

Clean Code in Python

Refactor your legacy code base
توسط Mariano Anaya 2018 332 صفحات
4.11
100+ امتیازها
گوش دادن
گوش دادن

نکات کلیدی

1. کد تمیز برای پروژه‌های نرم‌افزاری قابل نگهداری ضروری است

کد تمیز فقط یک ویژگی خوب یا لوکس در پروژه‌های نرم‌افزاری نیست. بلکه یک ضرورت است.

خوانایی کد اهمیت دارد. کد تمیز برای موفقیت بلندمدت هر پروژه نرم‌افزاری اساسی است. این مفهوم فراتر از قالب‌بندی ساده است و شامل ساختار کلی، وضوح و قابلیت نگهداری کد می‌شود. جنبه‌های کلیدی کد تمیز شامل موارد زیر است:

  • قالب‌بندی و نام‌گذاری یکسان
  • مستندسازی واضح و مختصر
  • ساختار کد ماژولار و سازمان‌یافته
  • حداقل تکرار کد (اصل DRY)
  • سهولت درک و تغییر

ابزارهای کیفیت کد. برای حفظ کد تمیز، توسعه‌دهندگان باید از ابزارهای مختلف استفاده کنند:

  • لینترها (مانند Pylint) برای بررسی سبک و خطا
  • چک‌کننده‌های نوع (مانند Mypy) برای تحلیل نوع استاتیک
  • قالب‌بندهای کد (مانند Black) برای سبک‌دهی یکسان
  • چارچوب‌های تست خودکار برای اطمینان از صحت کد

2. کد پایتونیک از ویژگی‌های خاص زبان برای کارایی بهره می‌برد

کد پایتونیک به طور کلی کد با کیفیت‌تری است.

پذیرش اصطلاحات پایتون. نوشتن کد پایتونیک به معنای استفاده از ویژگی‌ها و قراردادهای خاص زبان برای ایجاد کدی خواناتر، کارآمدتر و قابل نگهداری‌تر است. مفاهیم کلیدی پایتونیک شامل موارد زیر است:

  • استفاده از لیست کامپرهنشن و جنریتور اکسپرشن
  • مدیریت زمینه (با استفاده از with)
  • استفاده صحیح از توابع و ساختارهای داده داخلی
  • بهره‌گیری از تایپ داک و طبیعت پویا پایتون

اجتناب از اشتباهات رایج. روش‌های غیرپایتونیک که باید از آن‌ها اجتناب کرد:

  • استفاده از آرگومان‌های پیش‌فرض قابل تغییر
  • گسترش نادرست انواع داخلی
  • استفاده بیش از حد از متغیرهای جهانی
  • نادیده گرفتن ویژگی‌های کتابخانه استاندارد پایتون

با رعایت اصول پایتونیک، توسعه‌دهندگان می‌توانند کدی بنویسند که نه تنها کارآمدتر است بلکه با بهترین شیوه‌های جامعه پایتون نیز همسو است.

3. اصول طراحی انعطاف‌پذیری و قابلیت گسترش در نرم‌افزار را ترویج می‌دهند

ایده معکوس کردن وابستگی‌ها این است که کد ما نباید به جزئیات یا پیاده‌سازی‌های خاص تطبیق یابد، بلکه برعکس.

جداسازی نگرانی‌ها. طراحی خوب نرم‌افزار بر چندین اصل کلیدی تکیه دارد که ماژولاریت، انعطاف‌پذیری و قابلیت نگهداری را ترویج می‌دهند:

  • اصل مسئولیت واحد (SRP): هر جزء باید یک دلیل برای تغییر داشته باشد
  • اصل باز/بسته (OCP): باز برای گسترش، بسته برای تغییر
  • اصل معکوس کردن وابستگی (DIP): وابستگی به انتزاعات، نه به جزئیات

طراحی برای تغییر. اجرای این اصول منجر به:

  • نگهداری و به‌روزرسانی آسان‌تر کد
  • بهبود قابلیت تست و اشکال‌زدایی
  • افزایش قابلیت استفاده مجدد از کد
  • کاهش اثرات زنجیره‌ای هنگام ایجاد تغییرات

با رعایت این اصول طراحی، توسعه‌دهندگان می‌توانند نرم‌افزاری ایجاد کنند که در برابر تغییرات مقاوم‌تر و در طول زمان آسان‌تر قابل گسترش باشد.

4. اصول SOLID راهنمای طراحی شی‌گرا قوی هستند

اصول SOLID راهنمایی‌های کلیدی برای طراحی نرم‌افزار شی‌گرا خوب هستند.

تجزیه و تحلیل SOLID. اصول SOLID چارچوبی برای ایجاد سیستم‌های شی‌گرا قابل نگهداری و مقیاس‌پذیر ارائه می‌دهند:

  • اصل مسئولیت واحد (SRP)
  • اصل باز/بسته (OCP)
  • اصل جایگزینی لیسکوف (LSP)
  • اصل جداسازی رابط (ISP)
  • اصل معکوس کردن وابستگی (DIP)

مزایای SOLID. اعمال این اصول منجر به:

  • کد ماژولارتر و با اتصال کمتر
  • تست و نگهداری آسان‌تر
  • بهبود قابلیت استفاده مجدد از کد
  • سازگاری بهتر با تغییرات نیازمندی‌ها

در حالی که این اصول در زمینه‌های تایپ استاتیک منشأ گرفته‌اند، می‌توان آن‌ها را به طور مؤثر در محیط پویا پایتون تطبیق و اعمال کرد، که منجر به طراحی‌های شی‌گرا قوی‌تر و انعطاف‌پذیرتر می‌شود.

5. دکوراتورها قابلیت استفاده مجدد از کد و جداسازی نگرانی‌ها را افزایش می‌دهند

دکوراتورها ابزارهای قدرتمندی در پایتون هستند که می‌توانند به بسیاری از چیزها مانند کلاس‌ها، متدها، توابع، جنریتورها و بسیاری دیگر اعمال شوند.

تقویت کد چندمنظوره. دکوراتورها راهی تمیز برای تغییر یا گسترش رفتار توابع، متدها یا کلاس‌ها بدون تغییر کد منبع آن‌ها ارائه می‌دهند. استفاده‌های رایج شامل:

  • افزودن قابلیت لاگ‌گیری یا زمان‌بندی
  • پیاده‌سازی کش یا یادآوری
  • مدیریت کنترل دسترسی یا احراز هویت
  • تغییر آرگومان‌ها یا مقادیر بازگشتی توابع

بهترین شیوه‌ها. هنگام کار با دکوراتورها:

  • از functools.wraps برای حفظ متادیتای توابع دکور شده استفاده کنید
  • دکوراتورهایی ایجاد کنید که بتوانند با هر دو توابع و متدها کار کنند
  • از اثرات جانبی در بدنه دکوراتور اجتناب کنید
  • از دکوراتورهای مبتنی بر کلاس برای سناریوهای پیچیده‌تر استفاده کنید

دکوراتورها فلسفه "باتری‌ها شامل" پایتون را به نمایش می‌گذارند و ابزاری قدرتمند برای استفاده مجدد از کد و جداسازی نگرانی‌ها ارائه می‌دهند.

6. توصیف‌گرها مدیریت قدرتمند ویژگی‌ها را در پایتون فراهم می‌کنند

توصیف‌گرها یکی دیگر از ویژگی‌های متمایز پایتون هستند که برنامه‌نویسی شی‌گرا را به سطح دیگری می‌برند.

کنترل پیشرفته ویژگی‌ها. توصیف‌گرها امکان کنترل دقیق بر دسترسی، تغییر و حذف ویژگی‌ها در اشیاء پایتون را فراهم می‌کنند. آن‌ها به ویژه برای:

  • پیاده‌سازی ویژگی‌های محاسبه‌شده یا مدیریت‌شده
  • اعمال بررسی نوع یا اعتبارسنجی
  • ایجاد رفتار ویژگی قابل استفاده مجدد در چندین کلاس

انواع توصیف‌گرها:

  • توصیف‌گرهای داده: پیاده‌سازی set و/یا delete
  • توصیف‌گرهای غیر داده: فقط پیاده‌سازی get

توصیف‌گرها مکانیزم زیرین بسیاری از ویژگی‌های پایتون، از جمله ویژگی‌ها، متدها و متدهای کلاس هستند. درک و استفاده از توصیف‌گرها می‌تواند به طراحی‌های شی‌گرا زیباتر و قدرتمندتر در پایتون منجر شود.

7. جنریتورها و کوروتین‌ها پردازش داده کارآمد و برنامه‌نویسی غیرهمزمان را ممکن می‌سازند

جنریتورها احتمالاً بهترین ویژگی پایتون هستند.

تکرار حافظه‌کارآمد. جنریتورها راهی برای ایجاد تکرارگرهایی فراهم می‌کنند که مقادیر را به صورت درخواستی تولید می‌کنند، به جای اینکه همه آن‌ها را در حافظه ذخیره کنند. مزایا شامل:

  • کاهش استفاده از حافظه برای مجموعه داده‌های بزرگ
  • بهبود عملکرد برای پردازش توالی‌ها
  • ساده‌سازی کد برای تکرارهای پیچیده

برنامه‌نویسی غیرهمزمان. کوروتین‌ها، بر اساس جنریتورها، امکان‌پذیر می‌سازند:

  • عملیات I/O غیرمسدودکننده
  • برنامه‌نویسی همزمان بدون نخ‌ها
  • مدیریت کارآمد بسیاری از عملیات همزمان

مفاهیم کلیدی:

  • عبارات yield و yield from
  • نحو async و await (برای کوروتین‌های مدرن)
  • حلقه‌های رویداد و چارچوب‌های غیرهمزمان (مانند asyncio)

تسلط بر جنریتورها و کوروتین‌ها به توسعه‌دهندگان اجازه می‌دهد تا برنامه‌های پایتون کارآمدتر و مقیاس‌پذیرتری بنویسند، به ویژه برای وظایف I/O و پردازش داده.

8. تست واحد کیفیت کد را تضمین می‌کند و بازسازی را تسهیل می‌کند

تست‌های واحد (و هر نوع تست خودکار، در این مورد) برای نگهداری نرم‌افزار حیاتی هستند.

تضمین کیفیت. تست‌های واحد مزایای متعددی برای توسعه نرم‌افزار فراهم می‌کنند:

  • شناسایی و پیشگیری از باگ‌ها در مراحل اولیه
  • مستندسازی رفتار مورد انتظار
  • اطمینان در تغییرات کد و بازسازی
  • بهبود طراحی از طریق ملاحظات تست‌پذیری

بهترین شیوه‌های تست:

  • نوشتن تست‌ها قبل یا همزمان با کد (توسعه مبتنی بر تست)
  • هدف‌گذاری برای پوشش کد بالا، اما تمرکز بر مسیرهای بحرانی
  • استفاده از ماکینگ برای جداسازی واحدهای کد
  • اجرای منظم و نگهداری مجموعه تست

چارچوب‌های تست محبوب پایتون:

  • unittest (داخلی)
  • pytest (شخص ثالث، با ویژگی‌های پیشرفته)

گنجاندن تست واحد در فرآیند توسعه منجر به کدی با کیفیت بالاتر، قابل نگهداری‌تر و افزایش اطمینان در قابلیت اطمینان نرم‌افزار می‌شود.

9. الگوهای طراحی راه‌حل‌های قابل استفاده مجدد برای مشکلات رایج نرم‌افزاری ارائه می‌دهند

الگوهای طراحی راهنمایی‌های کلیدی برای طراحی نرم‌افزار شی‌گرا خوب هستند.

راه‌حل‌های اثبات‌شده. الگوهای طراحی بهترین شیوه‌ها برای حل مشکلات رایج طراحی نرم‌افزار را نشان می‌دهند. آن‌ها ارائه می‌دهند:

  • یک واژگان مشترک برای توسعه‌دهندگان
  • راه‌حل‌های طراحی آزمایش‌شده و اثبات‌شده
  • بهبود انعطاف‌پذیری و قابلیت نگهداری کد

دسته‌بندی الگوها:

  • الگوهای ساختاری (مانند Factory، Singleton)
  • الگوهای ساختاری (مانند Adapter، Decorator)
  • الگوهای رفتاری (مانند Observer، Strategy)

ملاحظات خاص پایتون. در حالی که بسیاری از الگوهای طراحی زبان‌محور نیستند، طبیعت پویا و ویژگی‌های داخلی پایتون می‌توانند نیاز به برخی از الگوهای سنتی را ساده یا حتی از بین ببرند. برای مثال:

  • تایپ داک پایتون می‌تواند جایگزین سلسله‌مراتب پیچیده ارث‌بری شود
  • توابع درجه اول می‌توانند الگوهای استراتژی و فرمان را ساده کنند
  • مدیران زمینه جایگزین پایتونیک برای برخی از الگوهای ساختاری ارائه می‌دهند

هنگام اعمال الگوهای طراحی در پایتون، مهم است که ویژگی‌های منحصر به فرد زبان و شیوه‌های اصطلاحی را در نظر بگیرید تا کدی تمیز، کارآمد و واقعاً پایتونیک ایجاد کنید.

آخرین به‌روزرسانی::

نقد و بررسی

4.11 از 5
میانگین از 100+ امتیازات از Goodreads و Amazon.

کتاب کد تمیز در پایتون عمدتاً نقدهای مثبتی دریافت کرده است و میانگین امتیاز 4.13 از 5 را کسب کرده است. خوانندگان از پوشش اصول کدنویسی تمیز، شیوه‌های پایتونیک و مباحث پیشرفته‌ای مانند دکوراتورها و الگوهای طراحی قدردانی می‌کنند. بسیاری از افراد این کتاب را برای بهبود مهارت‌های برنامه‌نویسی شیءگرا و کیفیت کد ارزشمند می‌دانند. برخی از خوانندگان به عمق و مثال‌های عملی کتاب اشاره می‌کنند، در حالی که عده‌ای سبک نگارش و کمبود تأکید بر برخی موضوعات را نقد می‌کنند. به‌طور کلی، این کتاب برای توسعه‌دهندگان پایتون در سطح متوسط تا پیشرفته که به دنبال بهبود شیوه‌های کدنویسی و تعمیق درک خود از زبان هستند، توصیه می‌شود.

درباره نویسنده

مارینو آنایا مهندس نرم‌افزار و نویسنده‌ای است که در برنامه‌نویسی پایتون تخصص دارد. او تجربه‌ی گسترده‌ای در توسعه‌ی کدهای تمیز و قابل نگهداری دارد و به اشتراک‌گذاری بهترین روش‌ها با جامعه‌ی پایتون علاقه‌مند است. تخصص آنایا در برنامه‌نویسی شیءگرا، الگوهای طراحی و معماری نرم‌افزار است. او از طریق نوشته‌ها و مشارکت‌های فنی خود، هدف دارد به توسعه‌دهندگان کمک کند تا مهارت‌های کدنویسی خود را بهبود بخشند و برنامه‌های کارآمدتر و مقیاس‌پذیرتری ایجاد کنند. آنایا به خاطر توانایی‌اش در توضیح مفاهیم پیچیده به شیوه‌ای قابل فهم شناخته شده است و او را به صدایی محترم در دنیای توسعه‌ی پایتون تبدیل کرده است.

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
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
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 Mar 1,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
50,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 →