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 Architecture

Clean Architecture

توسط Robert C. Martin 2017 432 صفحات
4.23
6k+ امتیازها
گوش دادن

نکات کلیدی

1. معماری نرم‌افزار به حداقل رساندن منابع انسانی و حداکثر کردن بهره‌وری می‌پردازد

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

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

جنبه‌های کلیدی معماری خوب:

  • جداسازی نگرانی‌ها
  • مدیریت وابستگی‌ها
  • انتزاع جزئیات پیاده‌سازی
  • انعطاف‌پذیری برای پذیرش تغییرات آینده

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

2. معماری تمیز قوانین کسب‌وکار را از جزئیات خارجی جدا می‌کند

مرکز برنامه شما پایگاه داده نیست. و نه یکی یا چند تا از چارچوب‌هایی که ممکن است استفاده کنید. مرکز برنامه شما موارد استفاده از برنامه شماست.

قوانین کسب‌وکار هسته هستند. معماری تمیز کد را به دایره‌های متحدالمرکز سازماندهی می‌کند، با قوانین کسب‌وکار در مرکز و جزئیات پیاده‌سازی در لایه‌های بیرونی. این جداسازی به هسته منطق کسب‌وکار اجازه می‌دهد تا از تغییرات در عوامل خارجی مانند پایگاه‌های داده، رابط‌های کاربری یا چارچوب‌ها تأثیر نپذیرد.

لایه‌های کلیدی در معماری تمیز:

  • موجودیت‌ها: قوانین کسب‌وکار در سطح سازمان
  • موارد استفاده: قوانین کسب‌وکار خاص برنامه
  • آداپتورهای رابط: تبدیل داده بین موارد استفاده و نهادهای خارجی
  • چارچوب‌ها و درایورها: ابزارها و فناوری‌های خارجی

با پایبندی به این ساختار، توسعه‌دهندگان می‌توانند سیستم‌هایی ایجاد کنند که:

  • انعطاف‌پذیرتر و قابل تطبیق با تغییرات باشند
  • آسان‌تر برای تست و نگهداری باشند
  • کمتر به فناوری‌ها یا چارچوب‌های خاص وابسته باشند

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

اصول SOLID به ما می‌گویند که چگونه توابع و ساختارهای داده خود را به کلاس‌ها ترتیب دهیم و چگونه این کلاس‌ها باید به هم متصل شوند.

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

اصول SOLID عبارتند از:

  • اصل مسئولیت واحد: یک کلاس باید تنها یک دلیل برای تغییر داشته باشد
  • اصل باز-بسته: نهادهای نرم‌افزاری باید برای گسترش باز و برای تغییر بسته باشند
  • اصل جایگزینی لیسکوف: اشیاء یک کلاس پایه باید قابل جایگزینی با اشیاء زیرکلاس‌های آن باشند بدون اینکه درستی برنامه تحت تأثیر قرار گیرد
  • اصل جداسازی رابط: بسیاری از رابط‌های خاص مشتری بهتر از یک رابط عمومی هستند
  • اصل وارونگی وابستگی: ماژول‌های سطح بالا نباید به ماژول‌های سطح پایین وابسته باشند؛ هر دو باید به انتزاعات وابسته باشند

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

4. اجزا بلوک‌های سازنده معماری تمیز هستند

اجزا واحدهای استقرار هستند. آن‌ها کوچک‌ترین نهادهایی هستند که می‌توانند به عنوان بخشی از یک سیستم مستقر شوند.

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

ویژگی‌های کلیدی اجزای خوب طراحی‌شده:

  • انسجام بالا: عملکرد مرتبط با هم گروه‌بندی شده
  • کوپلینگ پایین: حداقل وابستگی بین اجزا
  • رابط‌های واضح: روش‌های تعامل به خوبی تعریف‌شده
  • قابلیت استقرار مستقل: می‌توانند به‌روزرسانی یا جایگزین شوند بدون اینکه بر سایر بخش‌های سیستم تأثیر بگذارند

با سازماندهی سیستم‌ها به اجزا، معماران می‌توانند:

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

5. مرزها هسته منطق کسب‌وکار را تعریف و محافظت می‌کنند

در هر مرز معماری، احتمالاً الگوی شیء فروتن را در جایی نزدیک پیدا می‌کنیم.

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

جنبه‌های کلیدی مرزهای معماری:

  • استفاده از رابط‌ها برای تعریف تعاملات بین لایه‌ها
  • وارونگی وابستگی برای اطمینان از اینکه وابستگی‌ها به سمت داخل اشاره می‌کنند
  • اشیاء انتقال داده برای انتقال اطلاعات در سراسر مرزها
  • اشیاء فروتن برای جدا کردن رفتار قابل تست از اجزای سخت برای تست

با ایجاد مرزهای واضح، معماران می‌توانند:

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

6. معماری تمیز توسعه مبتنی بر تست و قابلیت استقرار مستقل را تسهیل می‌کند

یک معماری خوب سیستم را آسان می‌کند تا در همه راه‌هایی که باید تغییر کند، با باز گذاشتن گزینه‌ها تغییر کند.

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

مزایای معماری تمیز برای تست و استقرار:

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

این ویژگی‌ها منجر به:

  • چرخه‌های توسعه سریع‌تر
  • کاهش ریسک در استقرارها
  • بهبود قابلیت اطمینان سیستم
  • انعطاف‌پذیری بیشتر در پذیرش فناوری‌های جدید یا تغییر فناوری‌های موجود

7. چارچوب‌ها و پایگاه‌های داده جزئیات پیاده‌سازی هستند، نه عناصر معماری

چارچوب‌ها ابزارهایی برای استفاده هستند، نه معماری‌هایی که باید به آن‌ها پایبند بود.

منطق هسته باید مستقل از چارچوب باشد. معماری تمیز چارچوب‌ها و پایگاه‌های داده را به عنوان جزئیات خارجی در نظر می‌گیرد که نباید بر منطق کسب‌وکار هسته تأثیر بگذارند. این رویکرد امکان انعطاف‌پذیری بیشتر در تغییر یا به‌روزرسانی این عناصر خارجی بدون تأثیر بر عملکرد هسته سیستم را فراهم می‌کند.

اصول کلیدی برای مدیریت چارچوب‌ها و پایگاه‌های داده:

  • آن‌ها را به عنوان افزونه‌هایی برای منطق کسب‌وکار هسته در نظر بگیرید
  • از وارونگی وابستگی برای حفظ استقلال منطق هسته استفاده کنید
  • انتزاعاتی برای عملیات پایگاه داده ایجاد کنید
  • تصمیمات مربوط به چارچوب و پایگاه داده را تا حد ممکن به تأخیر بیندازید

مزایای این رویکرد:

  • تغییر یا ارتقاء چارچوب‌ها و پایگاه‌های داده آسان‌تر است
  • منطق کسب‌وکار هسته با وجود تغییرات خارجی پایدار می‌ماند
  • کاهش وابستگی به فروشنده
  • بهبود قابلیت تست اجزای سیستم هسته

8. وب فقط یک مکانیزم تحویل دیگر در معماری تمیز است

وب یک مکانیزم تحویل است و معماری برنامه شما باید آن را به این صورت در نظر بگیرد.

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

ملاحظات کلیدی برای برنامه‌های وب در معماری تمیز:

  • کد خاص وب را از منطق کسب‌وکار هسته جدا کنید
  • از آداپتورهای رابط برای تبدیل بین فرمت‌های وب و ساختارهای داده داخلی استفاده کنید
  • چارچوب‌های وب را به عنوان افزونه‌هایی برای سیستم هسته در نظر بگیرید
  • موارد استفاده را به‌طور مستقل از نگرانی‌های خاص وب طراحی کنید

مزایای این رویکرد:

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

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

اگرچه نرم‌افزار فرسوده نمی‌شود، اما می‌تواند از درون توسط وابستگی‌های مدیریت نشده به سخت‌افزار تخریب شود.

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

عناصر کلیدی معماری تمیز تعبیه‌شده:

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

مزایای این رویکرد در سیستم‌های تعبیه‌شده:

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

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

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

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

اعمال معماری تمیز به میکروسرویس‌ها:

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

مزایای معماری تمیز در میکروسرویس‌ها:

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

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

نقد و بررسی

4.23 از 5
میانگین از 6k+ امتیازات از Goodreads و Amazon.

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

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

رابرت سیسیل مارتین، که به عمو باب معروف است، یکی از مهندسان نرم‌افزار برجسته و حامی روش‌های توسعه‌ی چابک است. او به عنوان رئیس شرکت آبجکت منتور، تیمی از مشاوران را رهبری می‌کند که در طراحی شیءگرا، الگوها، UML و روش‌های چابک تخصص دارند. مارتین تجربه‌ی گسترده‌ای در صنعت نرم‌افزار دارد و از سال ۱۹۹۶ تا ۱۹۹۹ به عنوان سردبیر مجله‌ی C++ Report فعالیت کرده است. او سخنران پرطرفداری در کنفرانس‌ها و نمایشگاه‌های بین‌المللی است و تخصص خود را در زمینه‌ی بهترین روش‌های توسعه‌ی نرم‌افزار به اشتراک می‌گذارد. تأثیر مارتین فراتر از مشاوره است، زیرا او نویسنده‌ی چندین کتاب تأثیرگذار در زمینه‌ی مهارت‌های نرم‌افزاری و روش‌های کدنویسی پاک است.

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:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
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 Nov 30,
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/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance