Ez a dokumentum elmagyarázza, hogyan adhatsz hozzá új gyakorlófeladatot.
A legegyszerűbb módja annak, hogy megnézd, mely gyakorlófeladatok nincsenek még megvalósítva, ha felmész a kurzus build oldalára (pl. https://exercism.org/tracks/csharp/build), és megnézed a „Gyakorlófeladatok” szakaszt.
A build oldalon lévő adatok naponta egyszer frissülnek.
Gyorsan létrehozhatod egy új gyakorlófeladat vázát, ha a kurzus gyökérkönyvtárából futtatod a bin/add-practice-exercise szkriptet (forrás):
bin/add-practice-exercise <exercise-slug>
Opcionálisan megadhatod a feladat nehézségét (a -d kapcsolóval) és/vagy a szerző GitHub-felhasználónevét (az -a kapcsolóval) is:
bin/add-practice-exercise -d 3 -a foobar <exercise-slug>
Ha olyan kurzustárházon dolgozol, amelyben nincs meg ez a fájl, nyugodtan másold be a tárházadba a fenti forráshivatkozás segítségével.
Miután elkészültek a vázfájlok, a következőket kell tenned:
.meta/config.json fájljában:
authors kulcshozconfig.json fájljában:
practices kulcshoz (csak akkor szükséges, ha a kurzusnak vannak tanulófeladatai)prerequisites kulcshoz (csak akkor szükséges, ha a kurzusnak vannak tanulófeladatai)A feladat hozzáadásának egyik legfontosabb része a tesztek megírása. Nagyjából két lehetőség van, amikor egy gyakorlófeladathoz teszteket írsz:
canonical-data.json fájljában lévő teszteseteket használva, amelyek a problem-specifications repóban találhatók.https://exercism.org/exercises/<slug> címre, hogy áttekintést kapj arról, mely kurzusok valósítottak meg egy adott feladatot).A második lehetőség különösen vonzó lehet, mert gyorsan eredményt adhat. Tartsd azonban észben, hogy az implementációt hozzá kell igazítanod a kurzusodhoz. Például van, amelyik kurzus nem használ osztályokat, csak függvényekkel dolgozik. Ha viszont a kurzusod jellemzően objektumokkal dolgozik, akkor az implementációt ahhoz igazítsd, ami a legjobban illik a kurzusodhoz.
Egyes kurzusok tesztgenerátort használnak a feladat tesztfájljainak automatikus (újra)generálására. Nézd meg a kurzus dokumentációját, hogy van-e tesztgenerátor, és ha igen, hogyan kell használni.
Ahhoz, hogy biztos legyen, írható olyan kód, amely átmegy a teszteken, hozzá kell adnod egy példaimplementációt.
A kódnak nem kell idiomatikusnak lennie, csak át kell mennie a teszteken.
Ellenőrizheted, hogy a példaimplementáció átmegy-e az összes teszten, ha a kurzus gyökérkönyvtárából futtatod a bin/verify-exercises szkriptet (forrás):
bin/verify-exercises <exercise-slug>
A kimenet alapján ellenőrizd, hogy a példaimplementáció átmegy az összes teszten.
Ha olyan kurzustárházon dolgozol, amelyben nincs meg ez a fájl, nyugodtan másold be a tárházadba a fenti forráshivatkozás segítségével.
A színfalak mögött a bin/verify-exercises szkript több dolgot is csinál:
A stub implementációs fájl(ok) kiindulópontot adnak a tanulóknak.
Azt javasoljuk, hogy a stub fájlok a lehető legkevesebb kódot tartalmazzák, hogy:
A gyakorlatban ez azt jelenti, hogy definiálod azokat a függvényeket/metódusokat, amelyeket a teszthalmaz tesztel. A kurzusok szabadon dönthetik el, hogyan állítják össze ezt a kódot, amíg biztosítják, hogy a stub kód kezdetben minden teszten elbukik.
Python:
def two_fer(name):
pass
Kotlin:
fun twofer(name: String): String {
TODO("Implement the function to complete the task")
}
Az utolsó lépés, hogy futtatod a lintert, amely ellenőrzi, hogy a kurzus (konfigurációs) fájljai megfelelően strukturáltak-e, szintaktikailag és szemantikailag is.
Először győződj meg róla, hogy a configlet legújabb verziójával rendelkezel, ehhez futtasd:
bin/fetch-configlet
Ezután futtasd a lintert:
bin/configlet lint
A kimenet alapján ellenőrizd, hogy minden rendben van.
Miután minden rendben van, beküldhetsz egy pull requestet a kurzus repójába.
Beküldés előtt olvasd el a közreműködői pull request útmutatót és a pull request útmutatót.
Ügyelj rá, hogy a PR leírása felsorolja a hozzáadott feladatot.