انبوه داده

در برنامه‌نویسی شی گرا، "clump data" نامی است که به گروهی از متغیرهایی که با هم (در یک مجموعه) در تمام قسمت‌های مختلف برنامه منتقل می‌شوند، داده می‌شود. انبوه داده مانند سایر بوهای بد کد می‌تواند مشکلات عمیق‌تری در طراحی یا اجرای برنامه ایجاد کند. گروه متغیرهایی که به‌طور معمول یک انبوه داده را تشکیل می‌دهند، غالباً به هم وابسته هستند و به عنوان یک نتیجه در قالب یک مجموعه داده استفاده می‌شوند. انبوه داده همچنین به عنوان نوع خاصی از بوهای بد کد در سطح کلاس شناخته می‌شود که ممکن است نشانه کد ضعیف باشد.

بهبود دادن انبوه داده[ویرایش]

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

روند از بین بردن انبوه داده، خطر ایجاد نوع دیگری از بوی بد کد (کلاس داده، که یک کلاس است که فقط داده‌ها را ذخیره می‌کند و هیچ روشی برای کارکرد واقعی روی داده‌ها ندارد) را افزایش می‌دهد. با این حال، ایجاد کلاس برنامه‌نویس را ترغیب می‌کند تا عملکردهایی که ممکن است در اینجا گنجانده شود را نیز مشاهده کند.[۱][۲]

در برنامه‌نویسی شی گرا، هدف اشیاء کپسوله کردن داده‌های مربوط (فیلدها) و عملیات (روش‌ها) است که می‌توانند روی این داده‌ها انجام شوند.[۳] عدم قرار دادن فیلدها در کنار هم در یک شیء می‌تواند منجر به انبوه داده شود.

مثال[ویرایش]

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

در سی[ویرایش]

قبل از اصلاح

(public void AddCoords(int x, int y, int z

{ /* … */ }

بعد از اصلاح

منابع[ویرایش]

  1. Fowler, Martin. "DataClump". Retrieved 10 February 2017.
  2. "Data Clumps". SourceMaking. Retrieved 10 February 2017.
  3. Kindler, E.; Krivy, I. (2011). "Object-Oriented Simulation of systems with sophisticated control". International Journal of General Systems: 313–343. {{cite journal}}: Cite journal requires |journal= (help)