ConstructiCat Logo
CodeBust.
Browse section ▾

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

Problem

لديك مصفوفة تحتوي على أنواع مختلفة من البيانات.

Solution

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

##Example

Before
String[] row = new String[2];
row[0] = "Liverpool";
row[1] = "15";
After
Performance row = new Performance();
row.setName("Liverpool");
row.setWins("15");

##Why Refactor

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

##Benefits

  • في الفئة الناتجة، يمكنك وضع جميع السلوكيات المرتبطة التي تم تخزينها سابقاً في الفئة الرئيسية أو في أي مكان آخر.

  • توثيق حقول الفئة أسهل بكثير من توثيق عناصر المصفوفة.

##How to Refactor

  1. أنشئ الفئة الجديدة التي ستحتوي على بيانات المصفوفة. وضع المصفوفة نفسها في الفئة كحقل عام (Public field).

  2. أنشئ حقلاً لتخزين كائن هذه الفئة في الفئة الأصلية. ولا تنسَ أيضاً إنشاء الكائن نفسه في المكان الذي قمت فيه بتهيئة مصفوفة البيانات.

  3. في الفئة الجديدة، أنشئ توابع وصول واحداً تلو الآخر لكل عنصر من عناصر المصفوفة. وأعطها أسماء واضحة تشير إلى عملها. في نفس الوقت، استبدل كل استخدام لعنصر مصفوفة في الكود الرئيسي بتابع الوصول المقابل.

  4. عند إنشاء توابع الوصول لجميع العناصر، اجعل المصفوفة خاصة (Private).

  5. لكل عنصر في المصفوفة، أنشئ حقلاً خاصاً في الفئة ثم غيّر توابع الوصول لتستخدم هذا الحقل بدلاً من المصفوفة.

  6. عند نقل جميع البيانات، احذف المصفوفة.