---
title: "الكلاس الضخمة"
type: "code-smell"
slug: "large-class"
url: "http://localhost:3000/ar/smells/large-class.md"
category: "المتضخمات"
description: "تحتوي الكلاس على حقول/دوال/أسطر كود كثيرة."
---
# الكلاس الضخمة

> تحتوي الكلاس على حقول/دوال/أسطر كود كثيرة.

## Signs and Symptoms

تحتوي الكلاس على حقول/دوال/أسطر كود كثيرة.

## Reasons for the Problem

تبدأ الكلاسات عادةً صغيرة. لكن مع مرور الوقت، تنتفخ مع نمو البرنامج.

كما هو الحال مع الدوال الطويلة، يجد المبرمجون عادةً أنه أقل إجهاداً ذهنياً وضع ميزة جديدة في كلاس موجودة بدلاً من إنشاء كلاس جديدة للميزة.

## Payoff

* تعفي إعادة هيكلة هذه الكلاسات المطورين من الحاجة إلى تذكر عدد كبير من خصائص الكلاس.
* في حالات كثيرة، يؤدي تقسيم الكلاسات الضخمة إلى أجزاء إلى تجنب تكرار الكود والوظائف.
## Relations

**Treated by**

- [استخراج الفئة](/ar/extract-class.md)
- [استخراج الفئة الفرعية](/ar/extract-subclass.md)
- [استخراج الواجهة](/ar/extract-interface.md)
- [تكرار البيانات المرصودة](/ar/duplicate-observed-data.md)


## Detected by

- **sonar** `S2042` — يجب ألا تحتوي الكلاسات على أسطر كود كثيرة جداً (https://rules.sonarsource.com/swift/RSPEC-2042/)
- **sonar** `S1448` — يجب ألا تحتوي الكلاسات على دوال كثيرة جداً (https://rules.sonarsource.com/java/RSPEC-1448/)
- **sonar** `S1820` — يجب ألا تحتوي الكلاسات على حقول كثيرة جداً (https://rules.sonarsource.com/java/RSPEC-1820/)
- **pmd** `GodClass` — الكلاس الإله (تصميم PMD) (https://pmd.github.io/pmd/pmd_rules_java_design.html#godclass)
- **pmd** `TooManyMethods` — TooManyMethods (تصميم PMD) (https://pmd.github.io/pmd/pmd_rules_java_design.html#toomanymethods)
- **pmd** `TooManyFields` — TooManyFields (تصميم PMD) (https://pmd.github.io/pmd/pmd_rules_java_design.html#toomanyfields)
- **pylint** `R0902` — too-many-instance-attributes (https://pylint.readthedocs.io/en/latest/user_guide/messages/refactor/too-many-instance-attributes.html)
- **pylint** `R0904` — too-many-public-methods (https://pylint.readthedocs.io/en/latest/user_guide/messages/refactor/too-many-public-methods.html)
- **rubocop** `Metrics/ClassLength` — Metrics/ClassLength (https://docs.rubocop.org/rubocop/cops_metrics.html#metricsclasslength)
