علی قدرتی
علی قدرتی
خواندن ۲ دقیقه·۲ سال پیش

High Cohesion

انسجام بالا یک الگوی ارزیابی است که سعی می کند اشیاء را به طور مناسب متمرکز، قابل مدیریت و قابل درک نگه دارد. چسبندگی بالا به طور کلی برای پشتیبانی از Low Coupling استفاده می شود.

اصطلاح cohesion برای نشان دادن درجه ای که یک طبقه دارای مسئولیت واحد و کاملاً متمرکز است استفاده می شود. cohesion معیاری است که نشان می‌دهد چگونه روش‌های یک کلاس یا یک ماژول به طور معنادار و قوی مرتبط هستند و تا چه اندازه در ارائه یک هدف کاملاً تعریف شده برای سیستم متمرکز هستند.

مشکل

چگونه کلاس ها را متمرکز، قابل درک و قابل مدیریت نگه داریم؟

راه حل

مسئولیت ها را به گونه ای تعیین کنید که انسجام بالا باقی بماند. سعی کنید از کلاس هایی برای انجام کارهای بسیار متفاوت اجتناب کنید.

نکات کلیدی در مورد انسجام بالا

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

مثال

در این مثال، هدف کلاس MyReader خواندن resource ها است و فقط این کار را انجام می دهد. موارد غیر مرتبط دیگر را اجرا نمی کند. از این رو بسیار منسجم است.

class HighCohesive {
// -------------- functions related to read resource
// read the resource from disk
public String readFromDisk(String fileName) {
return "reading data of " + fileName;
}

// read the resource from web
public String readFromWeb(String url) {
return "reading data of " + url;
}

// read the resource from network
public String readFromNetwork(String networkAddress) {
return "reading data of " + networkAddress;
}
}

برای مطالعه ی ادامه مطالب به لینک مراجعه کنید.

software engineering
شاید از این پست‌ها خوشتان بیاید