---
title: "عبارات Switch"
type: "code-smell"
slug: "switch-statements"
url: "http://localhost:3000/ar/smells/switch-statements.md"
category: "مسيئو استخدام البرمجة كائنية التوجه"
description: "لديك عامل switch معقد أو سلسلة من عبارات if."
---
# عبارات Switch

> لديك عامل switch معقد أو سلسلة من عبارات if.

## العلامات والأعراض

لديك عامل `switch` معقد أو سلسلة من عبارات `if`.

## أسباب المشكلة

يعتبر الاستخدام النادر نسبياً لعوامل `switch` و `case` أحد السمات المميزة للكود كائني التوجه (object-oriented code). غالباً ما يكون الكود الخاص بعبارة `switch` واحدة مبعثراً في أماكن مختلفة في البرنامج. عند إضافة شرط جديد، يتعين عليك العثور على جميع أكواد `switch` وتعديلها.

كقاعدة عامة، عندما ترى `switch` يجب أن تفكر في تعدد الأشكال (polymorphism).

## المردود

* تحسين تنظيم الكود.
## Relations

**Treated by**

- [استخراج الدالة](/ar/extract-method.md)
- [نقل التابع (Move Method)](/ar/move-method.md)
- [استبدال كود النوع بفئات فرعية](/ar/replace-type-code-with-subclasses.md)
- [استبدال كود النوع بالحالة/الاستراتيجية](/ar/replace-type-code-with-state-strategy.md)
- [استبدال الجمل الشرطية بتعدد الأشكال (Replace Conditional with Polymorphism)](/ar/replace-conditional-with-polymorphism.md)
- [استبدال المعامل بدوال صريحة](/ar/replace-parameter-with-explicit-methods.md)
- [إدخال كائن فارغ (Introduce Null Object)](/ar/introduce-null-object.md)


## Detected by

- **sonar** `S1479` — يجب ألا تحتوي عبارات "switch" على الكثير من بنود "case" (https://rules.sonarsource.com/java/RSPEC-1479/)
- **eslint** `sonarjs/max-switch-cases` — يجب ألا تحتوي عبارات "switch" على الكثير من بنود "case" (https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/max-switch-cases.md)
