https://wiki.hsoub.com/index.php?title=Refactoring/large_class&feed=atom&action=history
Refactoring/large class - تاريخ المراجعة
2024-03-29T14:02:32Z
تاريخ التعديل لهذه الصفحة في الويكي
MediaWiki 1.35.0
https://wiki.hsoub.com/index.php?title=Refactoring/large_class&diff=28005&oldid=prev
جميل-بيلوني: تعديل التصنيفات
2019-03-02T07:29:35Z
<p>تعديل التصنيفات</p>
<table class="diff diff-contentalign-right diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ar">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">→ مراجعة أقدم</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">مراجعة 07:29، 2 مارس 2019</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l26" >سطر 26:</td>
<td colspan="2" class="diff-lineno">سطر 26:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Refactoring]]</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Refactoring]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Refactoring Smells]]</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Refactoring Smells]]</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Refactoring <del class="diffchange diffchange-inline">Classes</del>]]</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Refactoring <ins class="diffchange diffchange-inline">Bloaters</ins>]]</div></td></tr>
</table>
جميل-بيلوني
https://wiki.hsoub.com/index.php?title=Refactoring/large_class&diff=13195&oldid=prev
Nourtam: أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الأصناف الواسعة (Large Classes)}}</noinclude> == توصيف المشكلة == احتواء الصنف (class) العديدَ من...'
2018-07-18T04:25:31Z
<p>أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الأصناف الواسعة (Large Classes)}}</noinclude> == توصيف المشكلة == احتواء الصنف (class) العديدَ من...'</p>
<p><b>صفحة جديدة</b></p><div><noinclude>{{DISPLAYTITLE:الأصناف الواسعة (Large Classes)}}</noinclude><br />
== توصيف المشكلة ==<br />
احتواء الصنف (class) العديدَ من الحقول (fields) والتوابع (methods) وشيفرةً بأسطرَ كثيرةٍ.<br />
<br />
== أسبابها ==<br />
تبدأ الأصناف صغيرةً ليزداد حجمها مع استمرار تطوُّر البرنامج (كما الحال [[Refactoring/long method|بالتوابع الطويلة]]) لأنَّ المبرمج يرى أنَّ إضافة ميِّزاتٍ (features) جديدةٍ في صنفٍ موجودٍ مسبقًا أكثر سهولةً من إنشاء أصنافٍ جديدةٍ مخصَّصةٍ لها.<br />
<br />
== وما الحل؟ ==<br />
الحل بسيطٌ جدًا؛ وهو تقسيم الصنف، وذلك بإحدى الوسائل الآتية:<br />
* [[Refactoring/extract class|إنشاء صنفٍ جديدٍ (Extract Class)]] إن كان من الممكن فصلُ بعض مهامّ الصنف الحاليّ ونقلها للصنف الجديد.<br />
* [[Refactoring/extract subclass|إنشاء صنفٍ فرعيٍّ (Extract Subclass)]] لدى وجود جزءٍ يمكن تعريف استخدامه (implementation) بأكثر من طريقة، أو إن كان نادر الاستخدام بالأصل.<br />
* [[Refactoring/extract interface|إنشاء واجهةٍ (Extract Interface)]] عند الحاجة لوجود قائمةٍ بالعمليّات (operations) والإجراءات (functions) التي سيستفيد منها العميل (client).<br />
* أمّا إن كان الصنف مسؤولًا عن واجهةٍ رسوميّةٍ (graphical interface) فالأفضلُ حينها نقلُ بعض بياناته ومهامّه (functions) إلى كائنٍ مجاليّ (domain object)، وسيصبح من الضروري عندئذٍ تخزينُ بعض البيانات في مكانين مع إبقائها متماشيةً (consistent) مع بعضها، وللمزيد عن كيفيّة القيام بذلك راجع [[Refactoring/duplicate observed data|البيانات المُكرَّرة المراقَبَة (Duplicate Observed Data)]].<br />
<br />
== إليك المزيد ==<br />
توفِّر إعادة تصميم (refactoring) الأصناف الواسعة على المُطوِّر الحاجة لتذكُّر العدد الكبير لخصائص الصنف (class attributes)، وتمنع كذلك تكرار (duplication) الشيفرة والمهامّ البرمجيّة (functions).<br />
<br />
== انظر أيضًا ==<br />
* [[Refactoring/extract class|استخراج الأصناف (Extract Class)]]<br />
* [[Refactoring/extract subclass|استخراج الأصناف الفرعيٍّة (Extract Subclass)]]<br />
* [[Refactoring/extract interface|استخراج الواجهات (Extract Interface)]]<br />
* [[Refactoring/duplicate observed data|البيانات المُكرَّرة المراقَبَة (Duplicate Observed Data)]]<br />
<br />
== مصادر ==<br />
* [https://refactoring.guru/smells/large-class صفحة توثيق الأصناف الواسعة في موقع refactoring.guru.]<br />
[[تصنيف:Refactoring]]<br />
[[تصنيف:Refactoring Smells]]<br />
[[تصنيف:Refactoring Classes]]</div>
Nourtam