كيف يمكنك القيام بالتصميم حسب العقد في بيرل؟

StackOverflow https://stackoverflow.com/questions/439063

  •  22-07-2019
  •  | 
  •  

سؤال

أقوم بالتحقيق في استخدام DbC في مشاريع Perl الخاصة بنا، وأحاول العثور على أفضل طريقة للتحقق من العقود في المصدر (على سبيل المثال.التحقق من الشروط المسبقة/اللاحقة، والثوابت، وما إلى ذلك)

الفئة::عقد كتبه داميان كونواي ويتم صيانته الآن بواسطة C.Garret Goebel، لكن يبدو أنه لم يتم التطرق إليه منذ أكثر من 8 سنوات.

يبدو أن ما أريد استخدامه هو غزال أمريكي ضخم, ، كما يبدو كما لو أنه قد يوفر وظائف يمكن استخدامها لـ DbC، لكنني كنت أتساءل عما إذا كان لدى أي شخص أي موارد (مقالات، وما إلى ذلك) حول كيفية القيام بذلك، أو إذا كانت هناك أي وحدات مفيدة أستطيع أن أقدمها لم أتمكن من العثور عليها.

هل يقوم أي شخص باستخدام DbC مع Perl؟هل يجب أن "أقفز" إلى Moose وأرى ما يمكنني فعله من أجلي؟

هل كانت مفيدة؟

المحلول

يمنحك Moose الكثير من الأدوات (إن لم يكن كل السكر) للقيام بـ DbC.على وجه التحديد، يمكنك استخدام خطافات الطريقة قبل وبعد وحول (هنا بعض الأمثلة) لتنفيذ أي تأكيدات قد ترغب في إجرائها على الوسائط وإرجاع القيم.

كبديل لـ "إنشاء DbC الخاص بك"، يمكنك استخدام وحدة نمطية مثل MooseX::Method::Signatures أو موسكس::الطريقة لرعاية التحقق من صحة المعلمات التي تم تمريرها إلى روتين فرعي.ومع ذلك، لا تتعامل هذه الوحدات مع عمليات التحقق من الصحة "المنشورة" أو "الثابتة" التي توفرها DbC عادةً.

يحرر: بدافع من هذا السؤال، قمت بالاختراق معًا موسيكس::عقد وقمت بتحميله على CPAN.سأكون فضوليًا للحصول على تعليقات حول واجهة برمجة التطبيقات لأنني لم أستخدم DbC بشكل مباشر مطلقًا.

نصائح أخرى

وموس هو نظام س س ممتاز للبيرل، وأنا بحرارة أوصي به لأي شخص الترميز الكائنات في بيرل. يمكنك تحديد "فرعية" لأعضاء الفئة الخاصة بك التي ستنفذ عندما وضعت من قبل من يمكنهم الدخول أو منشئات (نفس النظام يمكن استخدامه مع حزمة موس :: طرق للوظائف). إذا كنت الترميز أكثر من واحد المتشددين، استخدم موس؛

وأما عن القيام DBC، حسنا، قد لا يكون الأنسب لperl5. انها سيكون من الصعب في اللغة التي يقدم لك عدد قليل جدا من الضمانات. شخصيا، في الكثير من اللغات الديناميكية، ولكن خصوصا بيرل، أنا أميل إلى أن أجعل توجيه DRY الفلسفة، والتنمية المدفوعة باعتبارات الاختبار.

وأوصي أيضا باستخدام موس.

ولكن ك "بديل" نلقي نظرة على الفرعية :: عقد .

وعلى حد تعبير المؤلف ....

<اقتباس فقرة>   

والفرعية :: عقد يوفر وسيلة عملية لتنفيذ أجزاء من البرمجة نموذج عقد في بيرل.

     

والفرعية :: عقد ليس إطار التصميم من قبل العقد.

     

ويهدف الفرعية :: عقد في مما يجعل من السهل جدا لتقييد الوظائف الفرعية الحجج المدخلات وإرجاع القيم من أجل محاكاة الكتابة قوية في وقت التشغيل.

إذا كنت لا تحتاج الثوابت الدرجة، لقد وجدت على توصية كتاب بيرل المأجورون التالية ليكون حلا جيدا لبعض البرامج. انظر Smart::Comments .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top