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.

Реалізація

Перш ніж почати, переконайтеся, що розумієте, як писати код, який проходить тестові випадки. Щоб дізнатися більше, перегляньте цей tutorial.

Більшість вправ із 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 вправ та справжнє наставництво від людей, і все це безкоштовно.