ConstructiCat Logo
CodeBust.
Browse section ▾

تنظيم البيانات.

Antipatterns Mascot
تغيير الارتباط ثنائي الاتجاه إلى أحادي الاتجاه

المشكلة: لديك ارتباط ثنائي الاتجاه بين فئات، ولكن إحدى الفئات لا تستخدم ميزات الفئة الأخرى. الحل: قم بإزالة الارتباط غير المستخدم.

001
Architectural Patterns Mascot
تغيير المرجع إلى قيمة

المشكلة: لديك كائن مرجعي (reference object) صغير جداً ونادراً ما يتغير، مما لا يبرر إدارة دورة حياته. الحل: قم بتحويله إلى كائن قيمة (value object).

002
Refactoring Mascot
تغيير الارتباط أحادي الاتجاه إلى ثنائي الاتجاه

المشكلة: لديك فئتان تحتاج كل منهما إلى استخدام ميزات الفئة الأخرى، ولكن الارتباط بينهما أحادي الاتجاه فقط. الحل: قم بإضافة الارتباط المفقود إلى الفئة التي تحتاجه.

003
Code Smells Mascot
تغيير القيمة إلى مرجع

المشكلة: لديك العديد من النسخ المتطابقة لفئة واحدة تحتاج إلى استبدالها بكائن واحد. الحل: قم بتحويل الكائنات المتطابقة إلى كائن مرجعي واحد.

004
Architectural Patterns Mascot
تكرار البيانات المرصودة

المشكلة: هل يتم تخزين بيانات النطاق (domain data) في فئات مسؤولة عن واجهة المستخدم الرسومية (GUI)؟ الحل: إذن فمن الجيد فصل البيانات في فئات منفصلة، مع ضمان الاتصال والمزامنة بين فئة النطاق وواجهة المستخدم الرسومية.

005
Design Patterns Mascot
تغليف المجموعة

المشكلة: تحتوي فئة على حقل مجموعة (collection field) ودوال الحصول والتعيين (getter and setter) بسيطة للعمل مع المجموعة. الحل: اجعل القيمة التي تعيدها دالة الحصول للقراءة فقط، وأنشئ دوال لإضافة/حذف عناصر المجموعة.

006
Antipatterns Mascot
تغليف الحقل

المشكلة: لديك حقل عام (public field). الحل: اجعل الحقل خاصاً (private) وأنشئ دوال وصول (access methods) له.

007
Code Smells Mascot
استبدال المصفوفة بكائن (Replace Array with Object)

المشكلة: لديك مصفوفة تحتوي على أنواع مختلفة من البيانات. الحل: استبدل المصفوفة بكائن يحتوي على حقول منفصلة لكل عنصر.

008
Design Patterns Mascot
استبدال قيمة البيانات بكائن

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

009
Code Smells Mascot
استبدال الرقم السحري بثابت رمزي

المشكلة: يستخدم الكود الخاص بك رقمًا له معنى معين. الحل: استبدل هذا الرقم بثابت له اسم مقروء ومفهوم يوضح معنى الرقم.

010
Code Smells Mascot
استبدال الفئة الفرعية بحقول

المشكلة: لديك فئات فرعية تختلف فقط في دوالها (التي تعيد قيمًا ثابتة). الحل: استبدل الدوال بحقول في الفئة الأب واحذف الفئات الفرعية.

011
Refactoring Mascot
استبدال كود النوع بفئة

المشكلة: تحتوي فئة ما على حقل يحتوي على كود نوع (type code). قيم هذا النوع لا تُستخدم في شروط العوامل ولا تؤثر على سلوك البرنامج. الحل: قم بإنشاء فئة جديدة واستخدم كائناتها بدلاً من قيم كود النوع.

012
Antipatterns Mascot
استبدال كود النوع بالحالة/الاستراتيجية

المشكلة: لديك نوع مرمز يؤثر على السلوك ولكن لا يمكنك استخدام فئات فرعية للتخلص منه. الحل: استبدل كود النوع بكائن حالة (state object). إذا كان من الضروري استبدال قيمة حقل بكود نوع، يتم "توصيل" كائن حالة آخر.

013
Antipatterns Mascot
استبدال كود النوع بفئات فرعية

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

014
Refactoring Mascot
التغليف الذاتي للحقل

المشكلة: تستخدم الوصول المباشر إلى الحقول الخاصة داخل الفئة. الحل: أنشئ دالة جلب (getter) ودالة تعيين (setter) للحقل، واستخدمهما فقط للوصول إلى الحقل.

015