نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

الصنف BasicObject في روبي

الصنف BasicObject هو الصنف الأب لجميع الأصناف في روبي، وهو صنف فارغ. يمكن استخدام الصنف BasicObject لإنشاء هرميات كائنية (object hierarchies) مستقلة عن الهرمية الكائنية للغة روبي، أو لإنشاء مغلفات الكائنات (proxy objects) مثل الصنف Delegator، أو حيث يجب تجنب إفساد مجال الأسماء (namespace pollution) من قبل توابع وأصناف روبي. لتجنب إفساد الصنف BasicObject للمستخدمين الآخرين، يجب إنشاء صنف فرعي من الصنف BasicObject تحت اسم مناسب بدلاً من تعديل BasicObject مباشرةً: class MyObjectSystem < BasicObject end لا يتضمَّن الصنف BasicObject الوحدة Kernel ...

نقل الميزات ما بين الكائنات (Moving Features between Objects)

تساعد عملية إعادة التصميم (refactoring) في توزيع المهام بشكل مثاليّ على الأصناف (classes) المختلفة في الشيفرة، وتضمن تقنيات الحل هذه طريقةً آمنةً لنقل المهام (functionality) ما بين الأصناف، وإنشاء أصناف جديدة وحماية تفاصيل عملية التنفيذ (implementation) من الوصول العام (public access)، وهذه التقنيات تشمل: نقل التابع (Move Method) المشكلة: استخدام التابع (method) في صنفٍ (class) ما أكثر من استخدامه في صنفه الأساسيّ. الحل: إنشاء تابعٍ جديدٍ في الصنف الأكثر استخدامًا لذلك التابع ونقل شيفرته إلى التابع الجديد، ثم تحويل الشيفرة ...

نقل الميزات ما بين الكائنات (Moving Features between Objects)

تساعد عملية إعادة التصميم (refactoring) في توزيع المهام بشكل مثاليّ على الأصناف (classes) المختلفة في الشيفرة، وتضمن تقنيات الحل هذه طريقةً آمنةً لنقل المهام (functionality) ما بين الأصناف، وإنشاء أصناف جديدة وحماية تفاصيل عملية التنفيذ (implementation) من الوصول العام (public access)، وهذه التقنيات تشمل: نقل التابع (Move Method) المشكلة: استخدام التابع (method) في صنفٍ (class) ما أكثر من استخدامه في صنفه الأساسيّ. الحل: إنشاء تابعٍ جديدٍ في الصنف الأكثر استخدامًا لذلك التابع ونقل شيفرته إلى التابع الجديد، ثم تحويل الشيفرة ...

التابع ‎‎.live()‎‎ في jQuery

‎.live( events, handler )‎ أهمل مع الإصدار: 1.7، وحذف مع الإصدار: 1.9. القيم المعادة يعيد كائنًا من النوع jQuery. الوصف يربط هذا التابع معالج حدث معين بجميع العناصر التي طابقت المحدِّد الحالي الآن وفي المستقبل. ‎.live( events, handler )‎ أُضيف مع الإصدار: 1.3. events سلسلة نصية تحتوي على نوع حدث JavaScript مثل "click" أو "keydown". يمكن للسلسلة النصية بدءًا من الإصدار jQuery 1.4 أن تحتوي على أنواع أحداث متعدِّدة مفصولةً بمسافة فارغة، أو أسماء أحداث مخصَّصة. handler دالة من الشكل ...

الوراثة الفائضة (Refused Bequest)

توصيف المشكلة استفادة الصنف الفرعيّ (subclass) من القليل فقط ممّا ورِثه عن الصنف الأعلى (superclass) من توابعَ (method) وحقولٍ (fields)، لتبقى التوابع الأخرى غيرَ مُستخدَمةٍ أو قد يُعاد تعريفها (redefined) مع الكثير من الاختلافات. أسبابها إنشاء علاقة الوراثة (inheritance) ما بين صنفين مختلفين كليًّا بدافع إعادة استخدام الشيفرة الموجودة في الصنف الأعلى (superclass) في الصنف الفرعيّ (subclass). وما الحل؟ إن لم يشترك الصنف الفرعيّ (subclass) مع الصنف الأعلى (superclass) بشيءٍ، فالوراثة غير منطقيّةٍ بالأصل، والأفضلُ التخلي عنها بتبديلها إلى تفويض ...

التابع ‎‎.blur()‎‎‎ في jQuery

‎.blur( handler )‎ القيمة المعادة كائن jQuery. الوصف يُستخدَم التابع ‎.blur()‎ في ربط مُعالِج أحداث (event handler) إلى حدث الضّبابيّة ‎(blur)‎ في JavaScript، أو إطلاق هذا الحدث على عنصر ما. ‎.blur( handler )‎ أضيفت في الإصدار: 1.0. handler دالة على الشكل ‎Function( Event eventObject )‎، وتُمثِّل الدالة التي ستُنفَّذ في كل مرة يُطلَق فيها الحدث. ‎.blur( [eventData ], handler )‎ أضيفت في الإصدار: 1.4.3. eventData أي شيء (وهو نوع افتراضي مُستخدَم في jQuery للإشارة إلى إمكانيّة استخدام أي نوع)، ويُمثِّل ...

التعامل مع التعميم (Dealing with Generalization)

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

التحقق من الأنواع (Type Check) والتحويل بينها (Casting) في لغة Kotlin

المعاملين is و ‎!is تدعم لغة Kotlin ميّزة التحقُّق من توافق الكائن مع أحد الأنواع أثناء التنفيذ، وذلك بالاعتماد على المُعامِل is أو صيغته المنفيّة ‎!is كما في الشيفرة: if (obj is String) { print(obj.length) } if (obj !is String) { // !(obj is String) مكافئ للصيغة print("Not a String") } else { print(obj.length) } التحويلات الذكية (Smart Casts) لا حاجة في كثيرٍ من الأحيان لجعل التحويل صريحًا (explicit) في لغة Kotlin لأنّ المترجم (compiler) يتتبَّع ...

الخاصية ‎event.stopPropagation()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery

event.stopPropagation()‎ القيمة المعادة تُعيد هذه الخاصية القيمة undefined. الوصف تمنع هذه الخاصية الحدث من الانتقال عبر شجرة DOM إلى العناصر الأب (event bubbling)، مما يمنع إبلاغ أي من المعالجات الأب عن الحدث. event.stopPropagation()‎ أُضيف مع الإصدار: 1.0. لا تقبل هذه الخاصية أي وسائط. تستخدم الخاصية event.isPropagationStopped()‎ للحقق من استدعاء هذا التابع (على كائن الحدث هذا). تعمل هذه الخاصية مع الأحداث المخصصة المُطلَقة بواسطة التابع trigger()‎ أيضًا. لاحظ أن هذه الخاصية لن تمنع المعالجات الأخرى من العمل على نفس العنصر. ملاحظات ...

الخاصية ‎event.stopPropagation()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery

event.stopPropagation()‎ القيمة المعادة تُعيد هذه الخاصية القيمة undefined. الوصف تمنع هذه الخاصية الحدث من الانتقال عبر شجرة DOM إلى العناصر الأب (event bubbling)، مما يمنع إبلاغ أي من المعالجات الأب عن الحدث. event.stopPropagation()‎ أُضيف مع الإصدار: 1.0. لا تقبل هذه الخاصية أي وسائط. تستخدم الخاصية event.isPropagationStopped()‎ للحقق من استدعاء هذا التابع (على كائن الحدث هذا). تعمل هذه الخاصية مع الأحداث المخصصة المُطلَقة بواسطة التابع trigger()‎ أيضًا. لاحظ أن هذه الخاصية لن تمنع المعالجات الأخرى من العمل على نفس العنصر. ملاحظات ...

التابع ‎‎jQuery.hasData()‎‎ في jQuery

jQuery.hasData( element )‎ القيم المعادة يعيد قيمةً منطقيَّةً (Boolean). الوصف يتحقَّق هذا التابع إن كان يملك عنصرٌ محدَّدٌ أيَّةَ بياناتٍ مرتبطةٍ به. jQuery.hasData( element )‎ أُضيفت مع الإصدار: 1.5. element عنصر DOM يراد التحقُّق من وجود بيانات مرتبطة به. يوفِّر التابع jQuery.hasData()‎ وسيلةً لتحديد إن كان العنصر الحالي يملك أيَّة بيانات رُبطَت به باستعمال التابع jQuery.data()‎. إن لم يكن هنالك بيانات مرتبطة بهذا العنصر، فسعيد التابع القيمة false. خلا ذلك، سيعيد التابع القيمة true. الميِّزة الأساسية للتابع jQuery.hasData( element )‎ ...

الخاصية ‎event.stopImmediatePropagation()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery

event.stopImmediatePropagation()‎ القيمة المعادة تُعيد هذه الخاصية القيمة undefined. الوصف تمنع هذه الخاصية تنفيذ بقية معالجات الأحداث ومنع الحدث من الانتقال عبر شجرة DOM إلى العناصر الأب (event bubbling). event.stopImmediatePropagation()‎ أُضيف مع الإصدار: 1.3. لا تقبل هذه الخاصية أي وسائط. بالإضافة إلى منع تنفيذ أي معالجات إضافية على عنصر ما، فإن هذه الخاصية أيضًا تمنع الانتقال عبر شجرة DOM إلى العناصر الأب عن طريق استدعاء event.stopPropagation()‎ ضمنيًا. لمنع الحدث من الانتقال إلى العناصر الأب ببساطة مع السماح الأحداث الأخرى بالتنفيذ على ...

الخاصية ‎event.stopImmediatePropagation()‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في jQuery

event.stopImmediatePropagation()‎ القيمة المعادة تُعيد هذه الخاصية القيمة undefined. الوصف تمنع هذه الخاصية تنفيذ بقية معالجات الأحداث ومنع الحدث من الانتقال عبر شجرة DOM إلى العناصر الأب (event bubbling). event.stopImmediatePropagation()‎ أُضيف مع الإصدار: 1.3. لا تقبل هذه الخاصية أي وسائط. بالإضافة إلى منع تنفيذ أي معالجات إضافية على عنصر ما، فإن هذه الخاصية أيضًا تمنع الانتقال عبر شجرة DOM إلى العناصر الأب عن طريق استدعاء event.stopPropagation()‎ ضمنيًا. لمنع الحدث من الانتقال إلى العناصر الأب ببساطة مع السماح الأحداث الأخرى بالتنفيذ على ...

التابع ‎‎jQuery.hasData()‎‎ في jQuery

jQuery.hasData( element )‎ القيم المعادة يعيد قيمةً منطقيَّةً (Boolean). الوصف يتحقَّق هذا التابع إن كان يملك عنصرٌ محدَّدٌ أيَّةَ بياناتٍ مرتبطةٍ به. jQuery.hasData( element )‎ أُضيفت مع الإصدار: 1.5. element عنصر DOM يراد التحقُّق من وجود بيانات مرتبطة به. يوفِّر التابع jQuery.hasData()‎ وسيلةً لتحديد إن كان العنصر الحالي يملك أيَّة بيانات رُبطَت به باستعمال التابع jQuery.data()‎. إن لم يكن هنالك بيانات مرتبطة بهذا العنصر، فسعيد التابع القيمة false. خلا ذلك، سيعيد التابع القيمة true. الميِّزة الأساسية للتابع jQuery.hasData( element )‎ ...

التخطيط الشمولي المفرط (Speculative Generality)

توصيف المشكلة وجود أصنافٍ (classes) أو توابعَ (methods) أو حقولٍ (fields) أو معاملاتٍ (parameters) غير مُستخدَمة في الشيفرة. أسبابها إنشاء عناصرَ إضافيّةٍ "قد" يحتاجها المبرمج مستقبلًا لميّزات يُخطِّط لها (وقد لا تُنفَّذ أصلًا)، وغير مستخدمةٍ بالوقت الحاليّ، مما يجعل الشيفرة أكثر صعوبةً بالفهم والدعم. وما الحل؟ هدم الهيكليّة الهرميّة (collapse hierarchy) لإزالة الأصناف المُجرَّدة (abstract classes) غير المُستخدَمة. دمج الأصناف (inline classes) للحدُّ من عمليات تفويض المهامّ (delegation) غير الضروريّة لصنفٍ آخر. دمج التوابع (inline methods) للتخلُّص من التوابع عديمة ...

الروتينات المساعدة (Coroutines) في لغة Kotlin

ملاحظة: ما تزال الروتينات المساعدة تجريبيةً في الإصدار Kotlin 1.1. الروتينات المساعدة (Coroutines) تُنشِئ بعض الواجهات API عملياتٍ طويلة التنفيذ (مثل عمليات الدخل والخرج للشبكة أو الدخل والخرج للملفات أو الأعمال المُعقَّدة في الوحدتين CPU أو GPU)، وهذا سيجبر المُستدعي على تجميد تنفيذه (block) إلى حين إتمامها، ولذا توفِّر الروتينات المساعدة طريقةً لمنع تجميد الخيوط (threads) وإجراء عمليةٍ أقلَّ كلفةً (بالنسبة لزمن المعالجة) وأكثر قابليةً للتحكم، ألا وهي الإيقاف المؤقت (suspension) للروتينات المساعدة. تبسّط الروتينات المساعدة البرمجة غير المتزامنة (asynchronous ...

اختلال الشيفرات ومشاكلها (Code Smells)

قد تعاني الشيفرات الكثير من الاختلالات والمشاكل الشكلية؛ فبمجرد اكتشاف تلك الاختلالات الظاهرية، يسهل علينا معرفة العلاج (التقنيات) وتطبيقه (إعادة التصميم) للحصول على شيفرة سليمة نظيفة. من هذه الاختلالات: المبالغة والإطالة قد يزداد حجم الشيفرات والتوابع (methods) والأصناف (classes) ازديادًا كبيرًا ليصل لمرحلةٍ يصعُب التعامل معها، ولا يحدث هذا بشكلٍ فجائيِّ دفعةً واحدةً، بل يكون ناتجًا عن تراكم الإضافات أثناء تطوير البرنامج (وخاصةً عندما لا يبذل أحدٌ جهدًا للحدِّ من ذلك التشعب)، ويبدو هذا التضخم واضحًا التوابع الطويلة (long methods): ...

الروابط الازدواجية (Couplers)

يتلخّص هذا الجانب بعواقب إنشاء رابطٍ شديدٍ ازدواجيّ (ما بين صنفين [classes])، أو قد تظهر بدائل عنه كالتفويض المفرط (excessive delegation)، وتتمثل هذه المشكلة بالنقاط الآتية: التسلط على الكائنات الأخرى (feature envy) المشكلة: استخدام بعضُ التوابع بياناتِ الكائنات الأخرى أكثر ممّا تستخدم بياناتِها ذاتَها. الحل: إبقاء الأجزاء التي تتغيَّر بآنٍ واحدٍ في المكان ذاته معًا عبر نقلُ التوابع، أو استخراجُ التوابع. الارتباط الوثيق غير المناسب (inappropriate intimacy) المشكلة: استخدام أحد الأصناف الحقولَ والتوابعَ الداخليّة لصنفٍ آخر بكثرة. الحل: نقلُ التوابع ونقل ...

الدالة not()‎ في Kotlin

تعكس الدالة not()‎ القيمة المنطقيَّة المستدعاة معها. يمكن استعمال المعامل ! عوضًا عن هذه الدالة. البنية العامة operator fun not(): Boolean المعاملات other القيمة المنطقية الأخرى التي ستطبق عليها العملية. القيمة المعادة يعاد عكس القيمة المنطقية المعطاة. أمثلة استخدام الدالة ()not لعكس قيمة منطقية معينة: fun main(args: Array<String>) { val x = true println(x.not()) // false println(!x) // false } انظر أيضًا الدالة and()‎: تجري العملية and المنطقية ...

الدالة or()‎ في Kotlin

تجري الدالة or()‎ العملية or المنطقية بين قيمتين منطقيتين؛ خلافًا للمعامل ||، تتحقق هذه الدالة من كلا القيمتين المنطقيتين. البنية العامة infix fun or(other: Boolean): Boolean وجود الكلمة المفتاحية infix يدل على أنَّ هذه الدالة يمكن استدعاؤها بنمط التدوين الداخليّ (infix notation)؛ أي من خلال حذف المعامل . والأقواس () المُستخدَمَين في الاستدعاء عادةً. المعاملات other القيمة المنطقية الأخرى التي ستطبق عليها العملية. القيمة المعادة تعاد قيمة منطقية تكون ناتج إجراء العملية or على القيمتين المعطيتين. أمثلة استخدام الدالة ()or لتطبيق العملية or على قيمتين منطقيتين: fun ...

عرض (20 السابقة | 20 التالية) (20 | 50 | 100 | 250 | 500).