Two Fer

Two Fer

سهل

مقدمة

في بعض اللهجات الإنجليزية، عندما تقول "two for" بسرعة، يبدو الأمر وكأنك تقول "two fer". و"two-for-one" طريقة للقول إنه إذا اشتريت واحدة، فستحصل على أخرى مجانًا. لذلك غالبًا ما توحي عبارة "two-fer" بعرض اثنين بسعر واحد.

تخيّل مخبزًا يقدّم عرضًا في العطلة، حيث يمكنك شراء قطعتين من الكعك بسعر قطعة واحدة ("two-fer one!"). فتأخذ العرض و(بكرم بالغ) تقرّر أن تعطي الكعكة الإضافية لشخص آخر في الطابور.

التعليمات

مهمتك هي أن تحدد ما ستقوله وأنت تعطي الكعكة الإضافية.

إذا كنت تعرف اسم الشخص (مثلًا إذا كان اسمه Do-yun)، فستقول:

One for Do-yun, one for me.

وإذا لم تكن تعرف اسم الشخص، فستقول you بدلًا من ذلك.

One for you, one for me.

إليك بعض الأمثلة:

الاسم الحوار
Alice One for Alice, one for me.
Bohdan One for Bohdan, one for me.
One for you, one for me.
Zaphod One for Zaphod, one for me.

التنفيذ

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

تتضمّن معظم تمارين Java حالات اختبار متعددة. وقد صُمّمت هذه الحالات لدعم عملية مفيدة تُعرف بـالتطوير الموجّه بالاختبارات (TDD). يتضمّن TDD تكرار حلقة منظّمة تساعد المبرمجين على بناء وظائف معقّدة جزءًا جزءًا بدلًا من بنائها دفعة واحدة. ويمكن وصف هذه الحلقة كما يأتي:

  1. أضف اختبارًا يصف جزءًا واحدًا من الوظائف المطلوبة ينقصه كودك حاليًا.
  2. شغّل الاختبارات للتأكّد من أن هذا الاختبار المضاف حديثًا يفشل.
  3. حدّث كودك الحالي حتى:
    • تستمر كل الاختبارات القديمة في النجاح؛
    • وينجح الاختبار الجديد أيضًا.
  4. نظّف كودك، مع التأكّد من استمرار نجاح كل الاختبارات. يتضمّن ذلك عادة إعادة تسمية المتغيرات، وإزالة الأجزاء المكرّرة من المنطق، وإزالة ما تبقّى من أسطر التسجيل، وما إلى ذلك.
  5. عُد إلى الخطوة 1 حتى تُبنى كل الوظائف المطلوبة!

تحتوي ملفات الاختبار في هذا المسار على كل الاختبارات التي يجب أن ينجح فيها حلّك ليعتبَر صحيحًا. وهذا لا يبدو متوافقًا للوهلة الأولى مع الحلقة الموصوفة أعلاه، التي تُكتب فيها الاختبارات واحدًا واحدًا. ومع ذلك، فإن الأداة التي نستعملها لكتابة اختباراتنا، JUnit، توفّر تعليقًا توضيحيًا من نوع @Disabled يمكن استعماله لتجاوز اختبار مكتوب مسبقًا مؤقتًا. وباستعمال هذا التعليق التوضيحي، نحرص على أن تحقّق ملفات الاختبار التي نسلّمها لك القواعد الآتية:

  • أول اختبار في أي ملف اختبار لا يُتجاوَز افتراضيًا.
  • كل الاختبارات باستثناء الأول في أي ملف اختبار متجاوَزة افتراضيًا.

وهذا يتيح لك محاكاة حلقة TDD باتباع هذه الخطوات المعدّلة قليلًا:

  1. شغّل الاختبارات للتأكّد من أنه لا يفشل حاليًا إلا اختبار واحد على الأكثر.
  2. حدّث كودك الحالي حتى تنجح كل الاختبارات غير المتجاوَزة.
  3. نظّف كودك مع التأكّد من استمرار نجاح كل الاختبارات غير المتجاوَزة.
  4. أزل تعليق @Disabled الأعلى في ملف الاختبار.
  5. عُد إلى الخطوة 1 حتى لا يبقى أي اختبار متجاوَز وتنجح كل الاختبارات!

المصدر

استكشف مصدر هذا التمرين.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Java Exercism

مستعد لبدء Two Fer؟

سجّل في Exercism لتتعلّم وتتقن Java عبر 26 مفهومًا158 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.