Klingon fordítószolgálat


Történet

Ebben a feladatban egy TranslationService-t készítesz, amellyel a fizetős tagok valamilyen minőségbiztosítást kapnak.

Találtál egy varázslatos fordítási API-t, amely ésszerű időn belül képes teljesíteni bármilyen fordítási kérést, és szeretnéd ezt kihasználni.

A varázslatos API felülete nagyon minimális:

Fordítás lekérése

Az api.fetch(text) lekéri a text fordítását, és két értéket ad vissza:

  • translation: maga a fordítás
  • quality: a minőség számmal kifejezve

Ha nem áll rendelkezésre fordítás (mert még nem kérték), az API hibát dob. Ez akkor is előfordul, ha egy szövegrész lefordíthatatlan.

Fordítás kérése

Az api.request(text, callback) elkéri a text fordítását, és amint készen van, meghívja a callback-et, érték nélkül.

A request API instabil, ami azt jelenti, hogy az API néha hibával hívja meg a callback-et. Ha ez megtörténik, nyugodtan kérheted újra.

⚠ Figyelem! ⚠

Mivel néhány korábbi felhasználó lusta volt programozás közben, és mindig kért egy fordítást anélkül, hogy ellenőrizte volna, le van-e már fordítva a szöveg, az API hibát ad vissza, ha a szöveget már lefordították, és minden hozzáférést teljesen blokkol, örökre.

Részfeladatok

Ezek példák olyan részfeladatokra, amelyek illenek a fordítószolgálat történetéhez:

  • Fordítás lekérése, a minőség figyelmen kívül hagyásával
  • Fordítások kötegének lekérése, mindent vagy semmit
  • Fordítás kérése, legfeljebb kétszeri újrapróbálkozással
  • Fordítás lekérése, a minőség megvizsgálása, vagy annak kérése

Terminológia

Ezek javaslatok, nem szabályok a feladatleírásokban visszatérő terminológiához (a stubkommentárokat is beleértve)

  • Az injektált függőség neve TranslationService, vagyis API
  • A szolgáltatás aszinkron, de ezt soha nem említjük
  • A Future hibája esetén az API hibát dob
  • A Callback hibája esetén az API hibával hívja meg a callback-et

Minden fordítandó szöveg klingonról angolra van.

Implementációk

Hivatkozások

Megjegyzés

Az 'arlogh Qoylu'pu'? helyes fordítása: How many times has it been heard?.