سؤال

إذا كان لدي FNC مثل هذا:

void fnc(const SomeType&){/**/}  

وعندما أدرج الشروط المسبقة والشرافات البريدية لهذا FNC ، أعتقد أن سرد الشرط المسبق للنموذج:
يجب أن يكون Sometype من النوع الصحيح هل غبي إلى حد ما ، أليس كذلك؟ أنا أسأل عن ذلك لأنهم في أحاديتي يريدون أن ندرج شيئًا كهذا ، ولكن إذا لم يكن نوع ARG صحيحًا ، فلن يتم تجميع الكود على أي حال ، لذلك أعتقد أنه من الخطأ أن يكون لديك شرط مسبق لهذا النموذج. لكن كالعادة ، أكون مخطئًا.

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

المحلول

لا توضح ما هو واضح.

كما تقول ، لن يتم تجميع الكود بوضوح إذا لم تتطابق الأنواع.

تعتمد الشروط السابقة وما بعدها على ما تحاول الوظيفة القيام به.

نصائح أخرى

إذا طلب منك معلموك إضافة تعليقات من هذا النوع ، فربما لا يكون ذلك بالنسبة للحالات البسيطة ، عندما يكون هذا التعليق مجرد غبي ومرجع من قبل المترجم على أي حال.

ولكن في بعض الحالات ، قد يكون النوع الرسمي المحدد في الخوارزمية أكثر تقييدًا من نوع التنفيذ المستخدم في C ++. في مثل هذه الحالات ، قد يكون لهذا النوع من التعليقات بعض الاستخدام.

هناك حالة أخرى مفيدة هي للوثائق المُثبّت تلقائيًا بناءً على التعليقات ، ولكن يجب أن يكون نظام الوثائق قادرًا على استخراج تلك المعلومات بمفرده من النموذج الأولي للوظيفة.

سأذكر ذلك مثل هذا:

يجب أن تكون الحجة الأولى من النوع SomeType, ، أو قابلة للتصوير.

ما إذا كان المترجم يمكنه التحقق من أنه لا يهم. لو بعض يمكن وضع شروط مسبقة من توقيع وظيفة ، وهذا لا يعني أن هذه الأشياء ليست شروطًا مسبقة. بعد قراءة الشروط المسبقة ، يجب أن يكون المستخدم قادرًا على كتابة برنامج يتم تجميعه وتشغيله بشكل صحيح.

أدلي بتعليقات مثل هذا غبي - أوافق. يجب أن توفر التعليقات بعض المعلومات المفيدة.

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

  • تأكيد وقت التشغيل (باستخدام C Macro يجزم()) ، عندما يجب الوفاء بالشرط من أجل تشغيل الوظيفة. وإلا فإن العملية تنتهي.
  • تأكيد ثابت (باستخدام std :: static_assert إذا كنت تستخدم C ++ 0x ، أو Boost_static_assert). عادة ما لا يتم ذلك ، حيث يتم إجراء هذا الشيك في وقت الترجمة
  • آلية الخطأ (رمي استثناء أو إرجاع رمز الخطأ)

يمكنك أيضًا إضافة قائمة من وسيط القالب إلى تعليق الوظيفة ، وجعل التجميع يفشل إذا لم تتطابق مع المتطلبات.

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