---
title: "تجمعات البيانات"
type: "code-smell"
slug: "data-clumps"
url: "http://localhost:3000/ar/smells/data-clumps.md"
category: "المتضخمات"
description: "في بعض الأحيان تحتوي أجزاء مختلفة من الكود على مجموعات متطابقة من المتغيرات (مثل معاملات الاتصال بقاعدة البيانات). ينبغي تحويل هذه التجمعات إلى كلاسات مستقلة."
---
# تجمعات البيانات

> في بعض الأحيان تحتوي أجزاء مختلفة من الكود على مجموعات متطابقة من المتغيرات (مثل معاملات الاتصال بقاعدة البيانات). ينبغي تحويل هذه التجمعات إلى كلاسات مستقلة.

## Signs and Symptoms

في بعض الأحيان تحتوي أجزاء مختلفة من الكود على مجموعات متطابقة من المتغيرات (مثل معاملات الاتصال بقاعدة البيانات). ينبغي تحويل هذه التجمعات إلى كلاسات مستقلة.

## Reasons for the Problem

غالباً ما تنشأ هذه المجموعات من البيانات بسبب ضعف بنية البرنامج أو ما يُعرف بـ "برمجة النسخ واللصق".

إذا أردت التحقق مما إذا كانت بعض البيانات تُشكّل تجمعاً، احذف إحدى قيم البيانات وتحقق من أن القيم الأخرى لا تزال منطقية. إذا لم يكن الأمر كذلك، فهذه إشارة واضحة إلى أن هذه المجموعة من المتغيرات ينبغي دمجها في كائن.

## Payoff

* يُحسّن فهم الكود وتنظيمه. تُجمَّع العمليات على البيانات المحددة في مكان واحد بدلاً من تشتتها عشوائياً عبر الكود.
* يُقلّل حجم الكود.
## Relations

**Treated by**

- [استخراج الفئة](/ar/extract-class.md)
- [إدخال كائن المعاملات (Introduce Parameter Object)](/ar/introduce-parameter-object.md)
- [الحفاظ على الكائن كاملاً (Preserve Whole Object)](/ar/preserve-whole-object.md)


## Detected by

- **sonar** `S107` — يجب ألا تحتوي الدوال على عدد كبير جداً من المعاملات (https://rules.sonarsource.com/java/rspec-107/)
- **pmd** `ExcessiveParameterList` — قائمة المعاملات المفرطة (https://docs.pmd-code.org/latest/pmd_rules_java_design.html#excessiveparameterlist)
- **eslint** `max-params` — فرض حد أقصى لعدد المعاملات (https://eslint.org/docs/latest/rules/max-params)
