أنماط :: undefobject.

إصدار من نمط الكائن غير محدد (كائن فارغ)
التحميل الان

أنماط :: undefobject. الترتيب والملخص

الإعلانات

  • Rating:
  • رخصة:
  • Perl Artistic License
  • السعر:
  • FREE
  • اسم الناشر:
  • John Napiorkowski
  • موقع ويب الناشر:
  • http://search.cpan.org/~jjnapiork/

أنماط :: undefobject. العلامات


أنماط :: undefobject. وصف

الأنماط :: undefobject هي إصدار من نمط الكائن غير محدد (الكائنات الفارغة). في بعض الأحيان عندما تتصل بطرق على كائن لا يمكنك التأكد من أن سلسلة مكالمة معينة ستكون صالحة. على سبيل المثال، إذا كنت تستخدم شيئا مثل DBIX :: Class قد تبدأ من خلال معرفة ما إذا كان مستخدم معين موجود في قاعدة بيانات ثم اتبع علاقات المستخدم لهذا الغرض المحدد: مخطط $ CO $ -> ') -> البحث (100) -> الهاتف_ غير النظامي -> الابتدائي؛ ومع ذلك سيموت سلسلة المكالمات هذه بجد أثناء الاحتجاج الديناميكي إذا فشلت طريقة البحث عن المكالمة (100) في العثور على مستخدم. سيعود هذا الفشل قيمة UNDEF ثم "لا يمكن استدعاء طريقة" الهاتف التالية على قيمة غير محددة. غالبا ما يؤدي ذلك إلى كتابة الكثير من التعليمات البرمجية الدفاعية: لي $ الأول؛ إذا كان (مستخدم $ = $ shema- > النتائج ("المستخدم")) {$ company formal = {US $ المستخدم -> الهاتف -> الابتدائي؛} آخر {$ pristary = "رقم غير معروف"؛} بالطبع، ليكون آمنا حقا، ستحتاج إلى كتابة رمز دفاعي الكل في الطريق إلى أسفل السلسلة يجب أن تكون العلاقات غير مطلوبة منها. أعتقد أن هذا النوع من الشفرة الدفاعية المرجانية هو الوقت الذي يستغرق وقتا طويلا وتشتيته للقارئ. انتباه الفرد بعيدا عن الغرض الرئيسي من الكود. بالإضافة إلى ذلك، يبدو وكأنه بيل من رائحة رمز التصميم الموجه نحو الكائنات الجيدة. أنماط :: Undefobject تقدم نهجا واحدا محتملا لمعالجة هذه المشكلة. حددت هذه الفئة طريقة المصنع المسماة "ربما" تقبل حجة واحدة وإرجاع هذه الوسيطة إذا تم تعريفها. خلاف ذلك، فإنه إرجاع مثيل أنماط :: Undefobject، مما يحدد Autoloa د بحيث لا يهم الطريقة التي يتم استدعاءها، فإنه يعيد نفسه دائما. يتيح لك ذلك الاتصال بأي مدة تعسفية من سلاسل طريقة هذا الكائن الأولي دون التسبب في استثناء لإيقاف التعليمات البرمجية الخاصة بك. هذا الكائن الزائد يحمل سياق منطقي بحيث عند تقييمه كخفية، فإنه يعيد دائما خطأ. إذا حاولت تقييمها بأي طريقة أخرى، فستحصل على استثناء. يتيح لك ذلك استبدال نموذج التعليمات البرمجية أعلاه بما يلي: استخدام الأنماط :: undefobject؛ بلدي $ الأساسية = أنماط :: undefobject -> ربما ($ schema-> النتائج ('المستخدم') -> البحث (100)) -> الهاتف_ نكبر -> الأساسي || "رقم غير معروف"؛ يمكنك استخدام التصدير المتاح ربما لجعل هذا موجز أكثر قليلا (خاصة إذا كنت بحاجة إلى استخدامه عدة مرات). استخدام الأنماط :: undefobject 'ربما'؛ بلدي الأساسي = ربما ($ schema-> النتائج ('المستخدم') -> البحث (100)) -> الهاتف_ numbers -> الأساسي || "رقم غير معروف"؛ أنا شخصيا أجد أن هذا النمط يؤدي إلى مزيد من التعليمات البرمجية موجزة وقراءة كما أنه يثير أعمق على الرغم من الطرق التي يمكن للمرء استخدام تقنيات مماثلة لتغليف أنواع معينة أفضل من منطق العرض التقديمي. استخدام أنماط الاستخدام :: undefobject اسمي $ = ربما ($ user_rs-> find (100)) -> الاسم || اسم مستخدم غير معروف؛ صفح المنتج


أنماط :: undefobject. برامج ذات صلة