اصول SOLID: بوی بد کد: Couplers (وابسته کننده ها) - کوییز

بوی بد کد: Couplers (وابسته کننده ها)

کدام یک از موارد زیر، نشان‌دهندهٔ بوی بد کد 'Couplers' (وابسته کننده ها) در زمینهٔ نرم‌افزار است؟
  1. کلاس‌هایی که به ندرت تغییر می‌کنند و وابستگی کمی به کلاس‌های دیگر دارند.
  2. کلاس‌هایی که به شدت به جزئیات پیاده‌سازی کلاس‌های دیگر وابسته هستند و تغییر در یک کلاس، باعث تغییرات گسترده در کلاس‌های دیگر می‌شود.
  3. کلاس‌هایی که فقط از طریق واسط‌های (Interfaces) انتزاعی با یکدیگر ارتباط برقرار می‌کنند.
  4. کلاس‌هایی که مسئولیت‌های مشخص و محدودی دارند و به خوبی از سایر بخش‌های سیستم جدا شده‌اند.

گزینه صحیح: 2

توضیح: بوی بد کد 'Couplers' زمانی رخ می‌دهد که کلاس‌ها به شدت به جزئیات پیاده‌سازی یکدیگر وابسته باشند. این وابستگی شدید، تغییر در یک کلاس را دشوار و پرخطر می‌کند، زیرا ممکن است باعث ایجاد اشکالات زنجیره‌ای در کلاس‌های دیگر شود.

کدامیک از موارد زیر به بهترین شکل بوی بد کد 'Couplers' (وابسته کننده‌ها) را در زمینه شناسایی بوی بد کد و رفع آن‌ها با SOLID توصیف می‌کند؟
  1. کلاس‌هایی که مسئولیت‌های زیادی دارند و به سختی قابل تغییر هستند.
  2. کلاس‌هایی که وابستگی زیادی به کلاس‌های دیگر دارند و تغییر در یک کلاس، باعث تغییرات گسترده در کلاس‌های دیگر می‌شود.
  3. کلاس‌هایی که بسیار کوچک هستند و وظایف بسیار جزئی انجام می‌دهند.
  4. کلاس‌هایی که کدهای تکراری زیادی در خود دارند.

گزینه صحیح: 2

توضیح: بوی بد کد 'Couplers' به کلاس‌هایی اشاره دارد که وابستگی شدیدی به یکدیگر دارند. این وابستگی زیاد باعث می‌شود که تغییر در یک کلاس، نیاز به تغییر در چندین کلاس دیگر را ایجاد کند که این موضوع نگهداری و توسعه نرم‌افزار را دشوار می‌سازد.

کدام یک از موارد زیر، نشان‌دهندهٔ بوی بد کد 'Couplers' (وابسته کننده‌ها) در زمینهٔ وابستگی بین کلاس‌ها است؟
  1. کلاسی که متدها و خصوصیات زیادی از کلاس دیگر را فراخوانی می‌کند.
  2. کلاسی که متدهای استاتیک زیادی دارد.
  3. کلاسی که دارای تعداد زیادی کامنت است.
  4. کلاسی که از وراثت چندگانه استفاده می‌کند.

گزینه صحیح: 1

توضیح: بوی بد کد Couplers زمانی رخ می‌دهد که یک کلاس وابستگی زیادی به جزئیات پیاده‌سازی کلاس دیگر پیدا می‌کند، مثلاً با فراخوانی مکرر متدها یا دسترسی به خصوصیات آن کلاس.

کدام اصل SOLID به طور مستقیم با کاهش وابستگی بین کلاس‌ها و مقابله با بوی بد 'Couplers' مرتبط است؟
  1. Single Responsibility Principle (SRP) - اصل مسئولیت واحد
  2. Open/Closed Principle (OCP) - اصل باز/بسته
  3. Dependency Inversion Principle (DIP) - اصل وارونگی وابستگی
  4. Liskov Substitution Principle (LSP) - اصل جایگزینی لیسکوف

گزینه صحیح: 3

توضیح: اصل وارونگی وابستگی (DIP) بیان می‌کند که ماژول‌های سطح بالا نباید به ماژول‌های سطح پایین وابسته باشند؛ هر دو باید به انتزاعات (Abstractions) وابسته باشند. این اصل به کاهش وابستگی مستقیم به جزئیات پیاده‌سازی کمک کرده و در نتیجه با بوی بد 'Couplers' مقابله می‌کند.

کدام اصل SOLID به طور مستقیم با کاهش وابستگی بین کلاس‌ها و در نتیجه کاهش بوی بد کد 'Couplers' مرتبط است؟
  1. Single Responsibility Principle (SRP) - اصل مسئولیت واحد
  2. Open/Closed Principle (OCP) - اصل باز/بسته
  3. Dependency Inversion Principle (DIP) - اصل وارونگی وابستگی
  4. Interface Segregation Principle (ISP) - اصل تفکیک رابط

گزینه صحیح: 3

توضیح: اصل وارونگی وابستگی (DIP) بر جداسازی ماژول‌های سطح بالا از ماژول‌های سطح پایین تمرکز دارد و هر دو را به انتزاعات (Abstractions) وابسته می‌کند. این رویکرد وابستگی مستقیم بین کلاس‌ها را کاهش داده و به رفع بوی بد 'Couplers' کمک می‌کند.

چگونه می‌توان وابستگی بین کلاس‌ها را در جهت کاهش بوی بد کد Couplers کاهش داد؟
  1. استفاده از الگوهای طراحی مانند Strategy یا Observer برای کاهش وابستگی مستقیم.
  2. تبدیل تمام متدها به متدهای private.
  3. حذف وراثت و استفاده از Composition به جای آن.
  4. استفاده از متدهای private برای همه خصوصیات کلاس.

گزینه صحیح: 1

توضیح: الگوهای طراحی مانند Strategy و Observer به کلاس‌ها اجازه می‌دهند تا بدون نیاز به دانستن جزئیات پیاده‌سازی یکدیگر، با هم تعامل داشته باشند و وابستگی مستقیم را کاهش دهند.

وقتی کدی دارای بوی بد 'Couplers' است، کدام یک از نتایج زیر محتمل‌تر است؟
  1. کد قابلیت نگهداری (Maintainability) بالایی دارد و تست کردن آن آسان است.
  2. تغییرات کوچک در یک قسمت سیستم، نیازمند تغییرات در بخش‌های زیادی از سیستم است.
  3. سیستم انعطاف‌پذیر است و به راحتی می‌توان قابلیت‌های جدیدی به آن اضافه کرد.
  4. کد به صورت ماژولار (Modular) طراحی شده و اجزای آن به خوبی از هم جدا شده‌اند.

گزینه صحیح: 2

توضیح: وابستگی شدید بین کلاس‌ها (Couplers) باعث می‌شود که تغییر در یک کلاس، نیاز به تغییرات گسترده در کلاس‌های وابسته داشته باشد. این امر نگهداری و توسعهٔ سیستم را دشوار و هزینه‌بر می‌کند.

در نظر بگیرید کلاسی به نام 'UserManager' مستقیماً با کلاسی به نام 'DatabaseManager' برای دسترسی به داده‌ها تعامل دارد. این وضعیت کدام بوی بد کد را نشان می‌دهد؟
  1. Large Class (کلاس بزرگ)
  2. Feature Envy (حسادت ویژگی)
  3. Couplers (وابسته کننده‌ها)
  4. Data Clumps (دسته‌های داده)

گزینه صحیح: 3

توضیح: تعامل مستقیم 'UserManager' با 'DatabaseManager' نشان‌دهنده وابستگی قوی بین این دو کلاس است. اگر 'DatabaseManager' تغییر کند، 'UserManager' نیز تحت تأثیر قرار خواهد گرفت. این نمونه‌ای کلاسیک از بوی بد 'Couplers' است.

کدام اصل SOLID به طور مستقیم با کاهش بوی بد کد Couplers مرتبط است؟
  1. اصل وارونگی وابستگی (Dependency Inversion Principle - DIP).
  2. اصل تک مسئولیتی (Single Responsibility Principle - SRP).
  3. اصل باز بودن/بسته بودن (Open/Closed Principle - OCP).
  4. اصل جایگزینی لیسکوف (Liskov Substitution Principle - LSP).

گزینه صحیح: 1

توضیح: اصل وارونگی وابستگی (DIP) توصیه می‌کند که ماژول‌های سطح بالا نباید به ماژول‌های سطح پایین وابسته باشند؛ هر دو باید به انتزاعات (abstractions) وابسته باشند. این امر وابستگی مستقیم و در نتیجه بوی بد Couplers را کاهش می‌دهد.

کدام روش، برای کاهش وابستگی بین کلاس‌ها و رفع بوی بد 'Couplers' مناسب‌تر است؟
  1. استفاده از کلاس‌های بزرگ و جامع که تمام منطق مورد نیاز را در خود جای دهند.
  2. استفاده از واسط‌های (Interfaces) انتزاعی و تزریق وابستگی (Dependency Injection).
  3. کپی کردن کد به جای استفاده از ارث‌بری (Inheritance).
  4. کاهش تعداد کلاس‌ها و ادغام منطق‌های مرتبط در یک کلاس.

گزینه صحیح: 2

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

کدام تکنیک برای کاهش بوی بد کد 'Couplers' در کدنویسی شیءگرا کمتر مؤثر است؟
  1. استفاده از واسط‌ها (Interfaces) و کلاس‌های انتزاعی (Abstract Classes)
  2. تزریق وابستگی (Dependency Injection)
  3. افزایش تعداد متدهای درون یک کلاس
  4. استفاده از الگوهای طراحی مانند Strategy یا Observer

گزینه صحیح: 3

توضیح: افزایش تعداد متدهای درون یک کلاس معمولاً به بوی بد 'Large Class' منجر می‌شود و ارتباطی به کاهش وابستگی بین کلاس‌ها ندارد. در حالی که سایر گزینه‌ها به طور مستقیم به کاهش وابستگی و رفع 'Couplers' کمک می‌کنند.

مثالی از بوی بد کد Couplers در کد پایتون می‌تواند چگونه باشد؟
  1. کلاسی که مستقیماً به جزئیات پیاده‌سازی کلاس دیگر دسترسی پیدا می‌کند، مثلاً `other_object.internal_data = new_value`.
  2. کلاسی که از متد `print()` برای نمایش خروجی استفاده می‌کند.
  3. کلاسی که یک تابع را با استفاده از `lambda` تعریف می‌کند.
  4. کلاسی که از دیکشنری برای ذخیره داده‌ها استفاده می‌کند.

گزینه صحیح: 1

توضیح: دسترسی مستقیم به داده‌های داخلی یک شیء دیگر (`internal_data`) نشان‌دهندهٔ وابستگی شدید و جزئی به پیاده‌سازی آن شیء است که مصداق بوی بد Couplers است.

در نظر بگیرید کلاس `OrderProcessor` به طور مستقیم به کلاس `DatabaseLogger` وابسته است. این یک نمونه از کدام بوی بد کد است؟
  1. Feature Envy (حسادت ویژگی)
  2. Couplers (وابسته کننده ها)
  3. Long Method (متد طولانی)
  4. Data Clumps (توده‌های داده)

گزینه صحیح: 2

توضیح: وابستگی مستقیم `OrderProcessor` به پیاده‌سازی `DatabaseLogger` نشان‌دهندهٔ وابستگی بالا و سفت و سخت بین دو کلاس است که یکی از مصادیق بوی بد 'Couplers' محسوب می‌شود.

اگر تغییری در جزئیات پیاده‌سازی یک سرویس (مثلاً 'EmailService')، نیاز به تغییر در تمام کلاس‌هایی که مستقیماً آن را فراخوانی می‌کنند (مثلاً 'NotificationService', 'UserService') داشته باشد، این نشان‌دهنده کدام بوی بد کد است؟
  1. Divergent Change (تغییر واگرا)
  2. Couplers (وابسته کننده‌ها)
  3. Parallel Inheritance Hierarchies (سلسله مراتب ارث‌بری موازی)
  4. Message Chains (زنجیره‌های پیام)

گزینه صحیح: 2

توضیح: این سناریو دقیقاً مصداق بوی بد 'Couplers' است. وابستگی شدید بین سرویس 'EmailService' و کلاس‌های مصرف‌کننده آن، باعث می‌شود تغییر در یک بخش، منجر به زنجیره‌ای از تغییرات در بخش‌های دیگر شود.

یکی از روش‌های رفع بوی بد کد Couplers، ایجاد لایه‌های انتزاعی است. منظور از انتزاع (abstraction) در این زمینه چیست؟
  1. تعریف اینترفیس‌ها (interfaces) یا کلاس‌های انتزاعی (abstract classes) که رفتار مشترک را مشخص می‌کنند.
  2. استفاده از متدهای private برای پنهان کردن جزئیات.
  3. نوشتن کد به صورت کوتاه‌تر و فشرده‌تر.
  4. استفاده از متغیرهای سراسری (global variables).

گزینه صحیح: 1

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

اگر بخواهیم کلاس `OrderProcessor` را از وابستگی مستقیم به `DatabaseLogger` جدا کنیم، کدام راهکار SOLID را می‌توان به کار برد؟
  1. تغییر نام متدهای `DatabaseLogger` تا با `OrderProcessor` هم‌خوانی بیشتری داشته باشند.
  2. ایجاد یک واسط (Interface) مانند `ILogger` و تزریق آن به `OrderProcessor`.
  3. انتقال منطق لاگ کردن به داخل کلاس `OrderProcessor`.
  4. حذف کامل قابلیت لاگ کردن برای ساده‌سازی کد.

گزینه صحیح: 2

توضیح: با تعریف یک واسط `ILogger` و استفاده از آن در `OrderProcessor`، می‌توان انواع مختلفی از لاگرها (مثلاً `DatabaseLogger` یا `FileLogger`) را بدون تغییر در `OrderProcessor` به آن تزریق کرد. این رویکرد وابستگی را معکوس کرده و بوی بد 'Couplers' را کاهش می‌دهد.

هدف اصلی از رفع بوی بد کد 'Couplers' چیست؟
  1. افزایش سرعت اجرای برنامه.
  2. کاهش مصرف حافظه.
  3. افزایش قابلیت نگهداری (Maintainability) و انعطاف‌پذیری (Flexibility) کد.
  4. بهبود رابط کاربری (User Interface).

گزینه صحیح: 3

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

کدام الگو طراحی (Design Pattern) به طور خاص برای مدیریت وابستگی‌ها و کاهش بوی بد Couplers در معماری‌های نرم‌افزاری کمک می‌کند؟
  1. Dependency Injection (تزریق وابستگی).
  2. Singleton (تک‌نمونه).
  3. Factory Method (متد کارخانه).
  4. Adapter (آداپتور).

گزینه صحیح: 1

توضیح: Dependency Injection (DI) یک تکنیک است که در آن وابستگی‌های یک شیء به جای اینکه توسط خود شیء ایجاد شوند، از خارج به آن داده می‌شوند. این امر وابستگی بین کلاس‌ها را به شدت کاهش می‌دهد.

کدام اصل SOLID به طور خاص به تشویق استفاده از انتزاعات (Abstractions) و کاهش وابستگی به پیاده‌سازی‌های ملموس (Concrete Implementations) می‌پردازد؟
  1. Single Responsibility Principle (SRP)
  2. Open/Closed Principle (OCP)
  3. Dependency Inversion Principle (DIP)
  4. Interface Segregation Principle (ISP)

گزینه صحیح: 3

توضیح: Dependency Inversion Principle (DIP) مستقیماً بر وارونگی وابستگی تأکید دارد، به این معنی که ماژول‌های سطح بالا و پایین باید به انتزاعات وابسته باشند، نه به یکدیگر. این اصل به طور مؤثری وابستگی‌های سفت و سخت را کاهش می‌دهد.

کدام اصل SOLID به طور غیرمستقیم با کاهش وابستگی به جزئیات پیاده‌سازی (Implementation Details) و در نتیجه کاهش 'Couplers' کمک می‌کند؟
  1. Liskov Substitution Principle (LSP) - اصل جایگزینی لیسکوف
  2. Interface Segregation Principle (ISP) - اصل تفکیک رابط
  3. Open/Closed Principle (OCP) - اصل باز/بسته
  4. Dependency Inversion Principle (DIP) - اصل وارونگی وابستگی

گزینه صحیح: 3

توضیح: اصل باز/بسته (OCP) بیان می‌کند که نرم‌افزار باید برای توسعه باز باشد اما برای تغییر بسته. با استفاده از انتزاعات و جلوگیری از تغییر کلاس‌های موجود، OCP به طور طبیعی وابستگی به جزئیات پیاده‌سازی را کاهش داده و به رفع 'Couplers' کمک می‌کند.

درک نادرست از اصل تک مسئولیتی (SRP) چگونه می‌تواند منجر به بوی بد کد Couplers شود؟
  1. اگر کلاسی مسئولیت‌های زیادی داشته باشد، ممکن است برای انجام وظایف خود به جزئیات پیاده‌سازی کلاس‌های دیگر وابسته شود.
  2. اگر کلاسی فقط یک مسئولیت داشته باشد، هیچ وابستگی‌ای ایجاد نمی‌کند.
  3. SRP مستقیماً با Couplers ارتباطی ندارد.
  4. تعداد متدها در کلاس را افزایش می‌دهد.

گزینه صحیح: 1

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

کدام یک از موارد زیر، یک الگوی طراحی (Design Pattern) است که می‌تواند به کاهش بوی بد 'Couplers' کمک کند؟
  1. Singleton (تک‌نمونه)
  2. Factory Method (متد کارخانه)
  3. Adapter (آداپتور)
  4. All of the above (همه موارد)

گزینه صحیح: 4

توضیح: الگوهای طراحی مانند Singleton، Factory Method و Adapter همگی می‌توانند به مدیریت وابستگی‌ها و کاهش coupling بین کلاس‌ها کمک کنند. Singleton برای مدیریت دسترسی به یک نمونهٔ واحد، Factory Method برای انتزاع فرآیند ایجاد اشیاء، و Adapter برای ایجاد سازگاری بین واسط‌های ناسازگار استفاده می‌شوند.

در یک سیستم که از الگوهای طراحی استفاده می‌کند، کدام الگو به طور خاص برای مدیریت وابستگی‌ها و کاهش 'Couplers' طراحی شده است؟
  1. Factory Pattern (الگوی کارخانه)
  2. Singleton Pattern (الگوی تک‌نسخه)
  3. Dependency Injection (تزریق وابستگی) - که اغلب با الگوهایی مانند Factory یا Service Locator پیاده‌سازی می‌شود.
  4. Observer Pattern (الگوی ناظر)

گزینه صحیح: 3

توضیح: تزریق وابستگی (DI) یک الگوی طراحی است که هدف اصلی آن مدیریت وابستگی‌ها بین اشیاء است. این الگو با جدا کردن فرآیند ایجاد وابستگی‌ها از کلاس‌هایی که به آن‌ها نیاز دارند، وابستگی مستقیم را کاهش داده و به رفع 'Couplers' کمک می‌کند.

چرا کاهش بوی بد کد Couplers برای نگهداری و توسعهٔ نرم‌افزار مهم است؟
  1. کاهش وابستگی‌ها باعث می‌شود تغییر در یک بخش از سیستم، کمتر بر بخش‌های دیگر تأثیر بگذارد و توسعه آسان‌تر شود.
  2. کد با وابستگی زیاد، سریع‌تر اجرا می‌شود.
  3. کاهش Couplers باعث افزایش پیچیدگی کد می‌شود.
  4. این موضوع فقط برای پروژه‌های کوچک اهمیت دارد.

گزینه صحیح: 1

توضیح: سیستم‌هایی با وابستگی کم (low coupling) انعطاف‌پذیرتر هستند؛ تغییر در یک کامپوننت به راحتی قابل انجام است بدون اینکه نیازی به بازنویسی بخش‌های دیگر سیستم باشد.

کدام عبارت، به بهترین شکل 'Couplers' را در زمینهٔ طراحی شیءگرا توصیف می‌کند؟
  1. میزان درهم‌تنیدگی (interconnectedness) منطق و داده بین کلاس‌ها.
  2. توانایی یک کلاس برای تغییر رفتار بدون تأثیر بر کلاس‌های دیگر.
  3. میزان استقلال (independence) یک کلاس از سایر کلاس‌ها در سیستم.
  4. تعداد متدهایی که یک کلاس ارائه می‌دهد.

گزینه صحیح: 1

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

کدام یک از روش‌های زیر، نمونه‌ای از ارتباط تنگاتنگ بین کلاس‌ها است که منجر به بوی بد 'Couplers' می‌شود؟
  1. یک کلاس که از یک سرویس خارجی از طریق یک API استاندارد استفاده می‌کند.
  2. یک کلاس که به طور مستقیم به فیلدهای عمومی (Public Fields) کلاس دیگر دسترسی دارد.
  3. یک کلاس که از یک کتابخانه استاندارد (مانند کتابخانه ریاضی) استفاده می‌کند.
  4. یک کلاس که از طریق یک واسط (Interface) با کلاس دیگری ارتباط برقرار می‌کند.

گزینه صحیح: 2

توضیح: دسترسی مستقیم به فیلدهای عمومی (Public Fields) یک کلاس، وابستگی شدیدی ایجاد می‌کند. هر تغییری در نام یا نوع آن فیلد، نیاز به تغییر در تمام کلاس‌هایی که به آن دسترسی دارند، خواهد داشت. این یک نشانه قوی از بوی بد 'Couplers' است.

کدام یک از موارد زیر، یک راه حل مناسب برای مدیریت وابستگی‌های پیچیده بین سرویس‌ها در یک معماری میکروسرویس است که به کاهش بوی بد Couplers کمک می‌کند؟
  1. استفاده از یک API Gateway و الگوهای ارتباطی غیرهمزمان (asynchronous communication) مانند صف پیام (message queues).
  2. استفاده از یک دیتابیس مرکزی برای تمام سرویس‌ها.
  3. ارسال مستقیم درخواست‌های HTTP بین سرویس‌ها بدون هیچ لایهٔ واسط.
  4. استفاده از متدهای private در تمام سرویس‌ها.

گزینه صحیح: 1

توضیح: API Gateway به عنوان یک نقطه ورود واحد عمل می‌کند و الگوهای ارتباطی غیرهمزمان، وابستگی مستقیم بین سرویس‌ها را کاهش داده و به سیستم اجازه می‌دهد تا با انعطاف‌پذیری بیشتری کار کند.

برای رفع بوی بد 'Couplers'، کدام اصل SOLID بیشترین تمرکز را بر تفکیک واسط‌ها (Interfaces) دارد تا کلاس‌ها مجبور به پیاده‌سازی متدهایی که به آن‌ها نیاز ندارند، نشوند؟
  1. Single Responsibility Principle (SRP)
  2. Open/Closed Principle (OCP)
  3. Dependency Inversion Principle (DIP)
  4. Interface Segregation Principle (ISP)

گزینه صحیح: 4

توضیح: Interface Segregation Principle (ISP) بیان می‌کند که هیچ کلاینتی نباید مجبور باشد به متدهایی وابسته باشد که از آن‌ها استفاده نمی‌کند. این اصل با تشویق به ایجاد واسط‌های کوچک و مخصوص، وابستگی‌های غیرضروری را کاهش داده و به رفع بوی بد 'Couplers' کمک می‌کند.

رفع بوی بد کد 'Couplers' با استفاده از اصل تفکیک رابط (ISP) چگونه انجام می‌شود؟
  1. با بزرگتر کردن رابط‌ها تا همه عملیات مورد نیاز را شامل شوند.
  2. با ایجاد رابط‌های کوچک و تخصصی که هر کدام فقط متدهای مربوط به یک وظیفه خاص را تعریف می‌کنند.
  3. با حذف کامل رابط‌ها و استفاده مستقیم از کلاس‌ها.
  4. با ادغام چندین رابط کوچک در یک رابط بزرگ.

گزینه صحیح: 2

توضیح: اصل تفکیک رابط (ISP) بیان می‌کند که هیچ کلاینتی نباید مجبور باشد به متدهایی وابسته باشد که از آن‌ها استفاده نمی‌کند. ایجاد رابط‌های کوچک و تخصصی، وابستگی را کاهش می‌دهد زیرا کلاس‌ها فقط به آن بخش‌هایی از رابط که نیاز دارند، متکی می‌شوند و این به کاهش 'Couplers' کمک می‌کند.

منبع آموزشی این مطلب

این مطلب برگرفته از محصول آموزشی «شناسایی بوی بد کد (Code Smells) و رفع آن‌ها با SOLID» است

برای مشاهده توضیحات کامل، جزئیات دوره و دریافت محصول، روی دکمه زیر کلیک کنید.

اطلاعات بیشتر و دریافت محصول