Add hozzá az első feladatot


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 feladat megvalósítása

A „Hello, World!” feladatra néhány különleges szabály vonatkozik:

  • Mindig egy kurzus első feladata
  • Minden kurzusnak meg kell valósítania
  • A tesztfájl csak egyetlen tesztet tartalmaz
  • A stub fájl egy majdnem működő implementációt tartalmaz, de a „Hello, World!” helyett a „Goodbye, Mars!” szöveget használja
  • Nincs prerequisites kulcsa
  • Nincs practices kulcsa

A fájlútvonalak meghatározása

A „Hello, World!” feladat (sőt, valójában az Exercism összes feladata) egy meghatározott fájlhalmazt igényel:

  • Dokumentáció: elmagyarázza a tanulónak, mit kell tennie (automatikusan generálható).
  • Metaadatok: néhány metaadatot ad az Exercism-nek a feladatról (nagyrészt automatikusan generálható).
  • Tesztkészlet: ellenőrzi egy megoldás helyességét (kurzusspecifikus).
  • Stub implementáció: kiindulópontot ad a tanulóknak (kurzusspecifikus).
  • Példa implementáció: egy példa implementációt ad, amely átmegy az összes teszten (kurzusspecifikus).
  • További fájlok: biztosítják, hogy a tesztek lefussanak (kurzusspecifikus, opcionális).

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.

A fájlútvonalak beállítása

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).

Példa

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"
  ]
}
Note

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.

A fájlok létrehozása

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

A szerző beállítása

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:

  • Add hozzá a GitHub-felhasználónevedet az authors kulcshoz

Hogy 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.

Note

A feladatok szerzői reputációt is kapnak

A szkript használata

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
Note

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.

A feladat elkészítése

Miután a vázfájlok elkészültek, a következőket kell tenned:

  • Teszteket adsz a tesztfájlhoz
  • Hozzáadsz egy példa implementációt
  • Meghatározod a stub fájl tartalmát

Tesztek hozzáadása

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:

  1. A teszteket nulláról írod meg, a feladat canonical-data.json fájljában található tesztesetek felhasználásával
  2. A teszteket egy másik kurzus implementációjából emeled át (tipp: nézd meg a https://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ő.

Példa implementáció hozzáadása

A példa implementációt tartalmazó fájlnak a tesztek megoldásához szükséges kódot kell tartalmaznia.

A stub meghatározása

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.

A feladat szerzőjének (szerzőinek) frissítése

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.

Lintelés

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álsz
  • bin/fetch-configlet.ps1: ezt futtasd, ha Windows-t használsz

Ha 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.

Note

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:

  • figyelmen kívül hagyod a hibát (egyelőre), vagy
  • kijavítod a hibát tagek hozzáadásával
Note

A configlet munkafolyamat automatikusan futtatja a configlet lint parancsot, amikor valamit a main ágra vagy egy pull requestbe pusholnak.