ضد الگو Blob در برنامه نویسی

مدرس: مسعود کاویانی

به طور خلاصه، اگر در ساخت یک برنامه به صورت شی گرایی، یک کلاس (Class) داشته باشید که کارهای بسیار زیادی را احتمالا به صورت انحصاری انجام دهد، ضد الگو Blob رخ داده است. این ضد الگو به God Class نیز معروف می باشد.

فرض کنید یک برنامه دارید که عملیات مختلفی، مانند آپلود تصاویر، نمایش تصاویر، مدیریت خطاها، تعیین سطح دسترسی کاربران به تصاویر خاص و… را انجام می دهد. حال فرض کنید یک کلاس (Class) بسیار بزرگ دارید که تمامی این کارها توسط توابع (Functions) این کلاس به صورت انحصاری انجام می شود. در واقع این جا یک کلاس Blob ایجاد شده است که مسئولیت بیش از حد را پذیرفته است.

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

این الگو نرم افزاری بیشتر از طراحی فرآیندی (Procedural Design) گرفته شده است. در طراحی تابعی، معمولا فرآیند ها از داده ها جدا هستند، این در حالی است که در برنامه نویسی شی گرا (Object Oriented Programming) فرآیند ها و داده ها با همدیگر ترکیب می شوند. برای مثال در برنامه نویسی شی گرا، یک کلاس داریم که کار آپلود داده ها را انجام می دهد. در این کلاس یک سری متغیر مخصوص این کلاس داریم که داده های آپلود شده را در این متغیرها قرار میدهیم و بعدا کارهای دیگر مانند ذخیره سازی در پایگاه داده ممکن است توسط کلاس های دیگر انجام شود. ولی در ضد الگو Blob کارهای بسیار بیشتری (مثلا کار ذخیره تصاویر در پایگاه داده) نیز به کلاس فعلی (که وظیفه آپلود تصویر را بر عهده دارد) سپرده می شود.

به تصویر زیر نگاهی بیندازید:

ضد الگوی بلاب

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

اگر کلاسی دارید که تعداد زیادی attribute و تابع دارد، میتوانید به این کلاس شک کنید. احتمالا این کلاس کارهایی فراتر از آنچه باید را انجام می دهد. یا اگر کلاس شما توابع مختلف و پراکنده ای (از لحاظ مفهومی و کارهایی که این کلاس دقیقا باید انجام دهد) داشته باشد، باز هم احتمالا دچار ضد الگو Blob شده اید.

یکی از نتایج بد این ضد الگو، میتواند این باشد که در آینده، زیاد نمیتوانید از قسمت های مختلف این کلاس های Blob استفاده مجدد (Reuse) کنید. همچنین بارگزاری این کلاس در حافظه اصلی (RAM) میتواند حجم زیادی از فضای RAM را اشغال کند.

منابع این بحث و اطلاعات بیشتر

» وب سایت Source Making » وب سایت Anti Patterns » ویکی C2 » جهت مطالعه بیشتر کتاب Anti Patterns توصیه می شود

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

2 دیدگاه دربارهٔ «ضد الگو Blob در برنامه نویسی»

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *