الفرق بين المراجعتين ل"Refactoring/change value to reference"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
ط
 
(6 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: تبديل قيم البيانات إلى كائنات (Change Value to Reference)}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: تبديل القيمة إلى مرجع (Change Value to Reference)}}</noinclude>
== توصيف المشكلة ==
+
==المشكلة==
عند وجود العديد من المثيلات المتطابقة من صنفٍ واحد تحتاج إلى استبدالها بكائنٍ واحد.
+
وجود العديد من النُسَخ المتماثلة من صنفٍ واحدٍ تحتاج إلى استبدال كائنٍ واحدٍ بها.
 +
==الحل==
 +
تحويل الكائنات المتماثلة إلى كائن مرجعي واحد.
  
== الحل ==
+
=== مثال ===
تحويل الكائنات المتطابقة إلى كائن مرجعي واحد.
 
  
== لماذا إعادة التصميم ==
+
==== قبل إعادة التصميم ====
في العديد من الأنظمة، يمكن تصنيف الكائنات علي إنها إمَّا قيم أو مراجع.
+
مخطط يوضح وجود العديد من النُسَخ المتماثلة من الصنف <code>Order</code>:[[ملف:Change Value to Reference - Before.png|بديل=مخطط يوضح وجود العديد من النُسَخ المتماثلة من صنفٍ Order.|بدون|تصغير|مخطط يوضح وجود العديد من النُسَخ المتماثلة من صنفٍ Order.]]
* المراجع: عندما يتوافق كائن واحد في العالم الحقيقي مع كائنٍ واحدٍ فقط في البرنامج. عادةً ما تكون المراجعُ كائنات مثل المستخدم/النظام/المنتج الخ.
 
* القيم: عندما يتوافق كائن واحد في العالم الحقيقي مع كائنات متعددة في البرنامج. ويمكن أن تكون هذه الكائنات التواريخ وأرقام الهواتف والعناوين والألوان وما شابه ذلك.
 
لا يكون اختيار المرجع مقابل القيمة دائمًا واضح المعالم. في بعض الأحيان يكون هناك قيمة بسيطة مع كمية صغيرة من البيانات التي لا تتغير. ثم يصبح من الضروري إضافة بيانات قابلة للتغيير وتمرير هذه التغييرات في كل مرة يُوصَل فيها إلى الكائن. في هذه الحالة يصبح من الضروري تحويلها إلى مراجع.
 
  
== الفوائد ==
+
==== بعد إعادة التصميم ====
* يحتوي الكائن على كافة المعلومات الحالية حول كيان معين. إذا تغير الكائن في أحد أجزاء البرنامج، يمكن الوصول إلى هذه التغييرات من الأجزاء الأخرى من البرنامج التي تستخدم هذا الكائن.
+
تحويل الكائنات المتماثلة إلى كائن مرجعي واحد:[[ملف:Change Value to Reference - After.png|بديل=تحويل الكائنات المتماثلة إلى كائن مرجعي واحد.|بدون|تصغير|تحويل الكائنات المتماثلة إلى كائن مرجعي واحد.]]
  
== العيوب ==
+
==لم إعادة التصميم؟==
* من الصعب جدًا تنفيذ المراجع.
+
في العديد من الأنظمة، يمكن تصنيف الكائنات على أنها إمَّا قيم أو مراجع.
 
+
*'''المراجع''': عندما يقابل كائن واحد في العالم الحقيقي (real-world object) مع كائنٍ واحدٍ فقط في البرنامج. عادةً ما تكون المراجعُ كائنات مثل المستخدم/النظام/المنتج ...إلخ.
== كيفية إعادة التصميم ==
+
*'''القيم''': عندما يقابل كائن واحد في العالم الحقيقي مع كائنات متعددة في البرنامج. ويمكن أن تكون هذه الكائنات تواريخًا وأرقام هواتف وعناوينًا وألوانًا وما شابه ذلك.
# استخدام [[Refactoring/replace constructor with factory method|استبدال المُنشِئ بتابع التصميم]] مع الصنف الذي تُنشأ منه المراجع.
+
لا يكون اختيار المرجع مقابل القيمة دائمًا واضح المعالم. في بعض الأحيان يكون هناك قيمة بسيطة مع كمية صغيرة من البيانات التي لا تتغير. ثم يصبح من الضروري إضافة بيانات قابلة للتغيير وتمرير هذه التغييرات في كل مرة يُوصَل فيها إلى الكائن. في هذه الحالة يصبح من الضروري تحويلها إلى مراجع.
# تحديد الكائن الذي سيكون مسؤولًا عن توفير الوصول إلى المراجع. بدلًا من إنشاء كائن جديد، عندما تحتاج واحدًا تصبح بحاجة الآن للحصول عليه من كائن تخزين أو حقل قاموس ثابت.
+
==فوائد تطبيق الحل==
# تحديد ما إذا كانت المراجع ستُنشَأ مسبقًا أو بشكل ديناميكي حسب الضرورة. إذا أُنشئت الكائنات مسبقًا، يجب التأكد من تحميلها قبل الاستخدام.
+
*يحتوي الكائن على كافة المعلومات الحالية حول كيان معين. إذا تغير الكائن في أحد أجزاء البرنامج، فيمكن الوصول إلى هذه التغييرات من الأجزاء الأخرى من البرنامج التي تستخدم هذا الكائن.
# تغيير تابع التصميم بحيث يُعيد مرجعًا. إذا أُنشئت الكائنات مسبقًا، حدد كيفية التعامل مع الأخطاء عند طلب كائن غير موجود. قد تحتاج أيضا إلى استخدام [[Refactoring/rename method|تابع إعادة التسمية]] للإبلاغ بأن التابع يُعيد الكائنات الموجودة فقط.
+
==مساوئ تطبيق الحل==
 
+
*من الصعب جدًا تنفيذ المراجع.
== انظر أيضًا ==
+
==آلية الحل==
* [[Refactoring/replace constructor with factory method|استبدال المُنشِئ بتابع التصميم]].
+
#استخدام [[Refactoring/replace constructor with factory method|استبدال الباني بتابع التصميم]] مع الصنف الذي تُنشَأ منه المراجع.
* [[Refactoring/rename method|تابع إعادة التسمية]].
+
#تحديد الكائن الذي سيكون مسؤولًا عن توفير الوصول إلى المراجع. بدلًا من إنشاء كائن جديد، عندما تحتاج واحدًا تصبح بحاجة الآن للحصول عليه من كائن تخزين أو حقل قاموس ثابت.
* العملية المُعاكسة [[Refactoring/change reference to value|تبديل الكائنات إلى قيم البيانات]].
+
#تحديد ما إذا كانت المراجع ستُنشَأ مسبقًا أو بشكل ديناميكي حسب الضرورة. إذا أُنشئت الكائنات مسبقًا، يجب التأكد من تحميلها قبل الاستخدام.
 
+
#تغيير تابع التصميم بحيث يُعيد مرجعًا. إذا أُنشئت الكائنات مسبقًا، حدد كيفية التعامل مع الأخطاء عند طلب كائن غير موجود. قد تحتاج أيضا إلى استخدام [[Refactoring/rename method|تابع إعادة التسمية]] للإبلاغ بأن التابع يُعيد الكائنات الموجودة فقط.
== مصادر ==
+
==انظر أيضًا==
* [https://refactoring.guru/change-value-to-reference صفحة توثيق تغيير القيمة إلى مرجع في موقع refactoring.guru].
+
*[[Refactoring/replace constructor with factory method|استبدال المُنشِئ بتابع التصميم]].
 +
*[[Refactoring/rename method|تابع إعادة التسمية]].
 +
*[[Refactoring/change reference to value|تبديل الكائنات إلى قيم البيانات]].
 +
==مصادر==
 +
*[https://refactoring.guru/change-value-to-reference صفحة توثيق تغيير القيمة إلى مرجع في موقع refactoring.guru].
 
[[تصنيف:Refactoring]]
 
[[تصنيف:Refactoring]]
[[تصنيف:Techniques]]
+
[[تصنيف:Refactoring Techniques]]
[[تصنيف:Organizing Data]]
+
[[تصنيف:Refactoring Organizing Data]]

المراجعة الحالية بتاريخ 09:43، 2 مارس 2019

المشكلة

وجود العديد من النُسَخ المتماثلة من صنفٍ واحدٍ تحتاج إلى استبدال كائنٍ واحدٍ بها.

الحل

تحويل الكائنات المتماثلة إلى كائن مرجعي واحد.

مثال

قبل إعادة التصميم

مخطط يوضح وجود العديد من النُسَخ المتماثلة من الصنف Order:

مخطط يوضح وجود العديد من النُسَخ المتماثلة من صنفٍ Order.
مخطط يوضح وجود العديد من النُسَخ المتماثلة من صنفٍ Order.

بعد إعادة التصميم

تحويل الكائنات المتماثلة إلى كائن مرجعي واحد:

تحويل الكائنات المتماثلة إلى كائن مرجعي واحد.
تحويل الكائنات المتماثلة إلى كائن مرجعي واحد.

لم إعادة التصميم؟

في العديد من الأنظمة، يمكن تصنيف الكائنات على أنها إمَّا قيم أو مراجع.

  • المراجع: عندما يقابل كائن واحد في العالم الحقيقي (real-world object) مع كائنٍ واحدٍ فقط في البرنامج. عادةً ما تكون المراجعُ كائنات مثل المستخدم/النظام/المنتج ...إلخ.
  • القيم: عندما يقابل كائن واحد في العالم الحقيقي مع كائنات متعددة في البرنامج. ويمكن أن تكون هذه الكائنات تواريخًا وأرقام هواتف وعناوينًا وألوانًا وما شابه ذلك.

لا يكون اختيار المرجع مقابل القيمة دائمًا واضح المعالم. في بعض الأحيان يكون هناك قيمة بسيطة مع كمية صغيرة من البيانات التي لا تتغير. ثم يصبح من الضروري إضافة بيانات قابلة للتغيير وتمرير هذه التغييرات في كل مرة يُوصَل فيها إلى الكائن. في هذه الحالة يصبح من الضروري تحويلها إلى مراجع.

فوائد تطبيق الحل

  • يحتوي الكائن على كافة المعلومات الحالية حول كيان معين. إذا تغير الكائن في أحد أجزاء البرنامج، فيمكن الوصول إلى هذه التغييرات من الأجزاء الأخرى من البرنامج التي تستخدم هذا الكائن.

مساوئ تطبيق الحل

  • من الصعب جدًا تنفيذ المراجع.

آلية الحل

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

انظر أيضًا

مصادر