Minden kurzus első feladata egy nagyon egyszerű „Hello, World!” feladat.
Ezzel a feladattal gyorsan ellenőrizhető, hogy minden megfelelően össze van-e kapcsolva. Ez megerősíti, hogy a felhasználó helyesen telepítette a programozási környezetet, tudja, hogyan kell futtatni a teszteket, és sikerül azokat teljesítenie. Ezenfelül az Exercism parancssori kliense (CLI) esetében azt is biztosítja, hogy a CLI telepítve és helyesen beállítva legyen, és hogy az oldal a feladathoz a megfelelő fájlokat szolgáltatja, felesleges fájlok nélkül. Végül biztosítja, hogy a felhasználó megismerkedjen azzal a ciklussal, amely során a CLI segítségével letölt egy feladatot, megoldja a problémát a helyi fejlesztői környezetében, majd beküldi a megoldását az oldalra.
Más szóval ez még nem igazán arról szól, hogy bármit is megtanuljunk magáról a nyelvről. Valami nagyon egyszerű a cél.
Valószínűleg ez lesz a legnehezebb része annak, hogy a kurzus repozitóriumát helyesen beállítsd, mivel egy feladat megvalósításában sok összetevőnek kell együtt működnie.
A „Hello, World!” feladatra néhány különleges szabály vonatkozik:
prerequisites kulcsapractices kulcsaA „Hello, World!” feladat (sőt, valójában az Exercism összes feladata) egy meghatározott fájlhalmazt igényel:
Mielőtt létrehozhatnánk a „Hello, World!” feladatot, döntened kell néhány dologról a kurzusspecifikus fájlnevekkel és fájlútvonalakkal kapcsolatban (tesztkészlet, stub implementáció, példa implementáció és bármilyen további fájl).
Ökölszabályként olyan neveket használj, amelyek idiomásak az adott nyelvben.
Ahol nincs erős preferencia, a sekélyebb könyvtárszerkezetet részesítsd előnyben.
A példa implementációt a CI-szkriptnek fel kell tudnia ismerni, ezért érdemes olyan általános alapnevet választani, amelyet minden feladat használhat, például example, sample vagy reference-solution.
Miután kiválasztottad a kurzusspecifikus fájlútvonalakat, a gyökér config.json fájl files kulcsában kell beállítanod őket.
A files kulcs sablonként szolgál majd minden feladathoz, ami lehetővé teszi bármilyen tooling számára (amelyek egy részét mindjárt használni is fogjuk), hogy tudja, hol keresse a fájlokat.
Különféle helyőrzőkkel könnyedén beállíthatod a feladat slugját (ebben az esetben hello-world).
Ha a kurzusod PascalCase-t használ a fájljaihoz, a files kulcs így nézhet ki:
"files": {
"solution": [
"%{pascal_slug}.cs"
],
"test": [
"%{pascal_slug}Tests.cs"
],
"example": [
".meta/Example.cs"
]
}
A példafájl(oka)t a .meta könyvtárban kell tárolni.
További információért nézd meg a files kulcs dokumentációját.
Miután megadtad a fájlútvonal-sablonokat, a következő parancsokat a kurzus gyökérkönyvtárából futtatva gyorsan legenerálhatod a „Hello, World!” feladat fájljait:
bin/fetch-configlet
bin/configlet create --practice-exercise hello-world
Ahhoz, hogy az oldal a feladat szerzőjeként tüntessen fel, kövesd az alábbi lépéseket:
A feladat .meta/config.json fájljában:
authors kulcshozHogy ez működjön, össze kell kapcsolnod az Exercism-fiókodat a GitHubbal. Ezt az oldalon, a Beállítások oldal Integrációk szakaszában teheted meg.
A feladatok szerzői reputációt is kapnak
Az újabb kurzus-repók a bin/add-practice-exercise szkriptet (forrás) használhatják új feladatok hozzáadásához:
bin/add-exercise -a <github_username> two-fer
Ha olyan kurzus-repón dolgozol, amelyben nincs meg ez a fájl, nyugodtan másold be a repódba a fenti forráslink segítségével.
Miután a vázfájlok elkészültek, a következőket kell tenned:
A feladat hozzáadásának kulcsfontosságú része a tesztek megírása. Nagyjából két lehetőség van, amikor a fenti feladatok egyikét megvalósítod:
canonical-data.json fájljában található tesztesetek felhasználásávalhttps://exercism.org/exercises/hello-world oldalt, hogy áttekintést kapj arról, mely kurzusok valósítottak meg egy adott feladatot).A „Hello, World!” feladatnál csak egyetlen teszteset lesz, így bármelyik lehetőség megfelelő.
A példa implementációt tartalmazó fájlnak a tesztek megoldásához szükséges kódot kell tartalmaznia.
A stub fájlnak majdnem működő megoldást kell tartalmaznia a tesztekhez, annyi különbséggel, hogy a „Hello, World!” szöveg helyett a „Goodbye, Mars!” szöveg áll benne. Tipp: egyszerűen másold be, majd módosítsd a példamegoldást.
Miután elkészültél a feladattal, add hozzá a GitHub-felhasználónevedet a feladat .meta/config.json fájljában található "authors" tömbhöz.
Ez biztosítja, hogy helyesen téged tüntessünk fel a feladat létrehozójaként.
Annak ellenőrzéséhez, hogy a feladat helyesen van-e beállítva, használhatod a configlet eszköz beépített lintelési funkcióját.
Az első lépés a configlet eszköz letöltése, amelyhez két szkriptet készítettünk:
bin/fetch-configlet: ezt futtasd, ha *nix vagy macOS rendszert használszbin/fetch-configlet.ps1: ezt futtasd, ha Windows-t használszHa ezen szkriptek egyikét a kurzus repójának gyökérkönyvtárából futtatod, letölti a bin/configlet, illetve bin/configlet.exe binárist.
Ezután a bin/configlet lint futtatásával ellenőrizheted, hogy a feladat helyes-e.
Valószínű, hogy a configlet a következő hibát jelzi:
The `tags` array is empty:
/path/to/track/config.json
Ezt a hibát a Felkészülés az indulásra lépésben javítjuk majd, így vagy:
A configlet munkafolyamat automatikusan futtatja a configlet lint parancsot, amikor valamit a main ágra vagy egy pull requestbe pusholnak.