Die erste Übung jedes Tracks ist eine ganz einfache „Hello, World!“-Übung.
Sinn dieser Übung ist es, schnell sicherzustellen, dass alles richtig zusammenspielt. Sie bestätigt, dass der Nutzer die Programmierumgebung korrekt installiert hat, dass er weiß, wie man die Tests ausführt, und dass er sie zum Laufen bringen kann. Darüber hinaus stellt sie beim Kommandozeilen-Client (CLI) von Exercism sicher, dass dieser korrekt installiert und konfiguriert ist, und dass die Website die richtigen Dateien für die Übung ausliefert, ohne unnötige Artefakte mitzugeben. Und schließlich sorgt sie dafür, dass der Nutzer mit dem Ablauf vertraut ist: eine Übung mit der CLI herunterladen, ein Problem in der lokalen Entwicklungsumgebung lösen und die Lösung wieder auf der Website einreichen.
Mit anderen Worten: Hier geht es noch nicht wirklich darum, etwas über die Sprache selbst zu lernen. Wir wollen etwas ganz Einfaches.
Das ist wahrscheinlich auch der schwierigste Teil beim korrekten Einrichten des Track-Repositories, denn an einer Übung hängen viele bewegliche Teile.
Für die „Hello, World!“-Übung gelten ein paar besondere Regeln:
prerequisites
practices
Die „Hello, World!“-Übung (und tatsächlich alle Übungen auf Exercism) benötigt einen bestimmten Satz von Dateien:
Bevor wir die „Hello, World!“-Übung erstellen können, musst du ein paar Entscheidungen über die Track-spezifischen Dateinamen und Dateipfade treffen (Testsuite, Stub-Implementierung, Beispielimplementierung und alle zusätzlichen Dateien).
Als Faustregel gilt: Verwende Namen, die für die Sprache idiomatisch sind. Wo es keine starken Vorlieben gibt, sind flachere Verzeichnisstrukturen besser. Die Beispielimplementierung muss vom CI-Skript erkannt werden können, deshalb ist es ratsam, einen generischen Basisnamen zu wählen, den alle Übungen verwenden können, z. B. example, sample oder reference-solution.
Nachdem du die Track-spezifischen Dateipfade gewählt hast, solltest du sie im Schlüssel files in der config.json-Datei im Stammverzeichnis konfigurieren. Der Schlüssel files dient als Vorlage für alle Übungen. So weiß jedes Tool (einige davon nutzen wir gleich), wo es nach Dateien suchen muss. Mit verschiedenen Platzhaltern kannst du den Slug der Übung (in diesem Fall hello-world) bequem konfigurieren.
Wenn dein Track PascalCase für seine Dateien verwendet, könnte der Schlüssel files so aussehen:
"files": {
"solution": [
"%{pascal_slug}.cs"
],
"test": [
"%{pascal_slug}Tests.cs"
],
"example": [
".meta/Example.cs"
]
}
Die Beispieldatei(en) sollten im Verzeichnis .meta liegen.
Weitere Informationen findest du in der Dokumentation zum Schlüssel files.
Nachdem du die Vorlagen für die Dateipfade festgelegt hast, kannst du die Dateien für die „Hello, World!“-Übung schnell anlegen, indem du im Stammverzeichnis des Tracks die folgenden Befehle ausführst:
bin/fetch-configlet
bin/configlet create --practice-exercise hello-world
Damit die Website dich als Autor der Übung aufführt, gehst du so vor:
In der Datei .meta/config.json der Übung:
authors hinzuDazu musst du dein Exercism-Konto mit GitHub verknüpfen. Das geht auf der Website im Bereich „Integrationen“ der Seite „Einstellungen“.
Wer Übungen erstellt, erhält außerdem Reputation
Neuere Track-Repos können das Skript bin/add-practice-exercise (Quelle) verwenden, um neue Übungen hinzuzufügen:
bin/add-exercise -a <github_username> two-fer
Wenn du an einem Track-Repo arbeitest, in dem diese Datei fehlt, kannst du sie über den oben stehenden Quelllink gerne in dein Repo kopieren.
Sobald die Dateien aus der Vorlage erstellt sind, musst du:
Ein wesentlicher Teil beim Hinzufügen einer Übung ist das Schreiben von Tests. Grob gesagt gibt es zwei Möglichkeiten, eine der oben genannten Übungen umzusetzen:
canonical-data.json der Übung verwendenhttps://exercism.org/exercises/hello-world siehst du, welche Tracks eine bestimmte Übung umgesetzt haben).Für die „Hello, World!“-Übung gibt es nur einen einzigen Testfall, daher ist jede der beiden Möglichkeiten in Ordnung.
Die Datei mit der Beispielimplementierung sollte den Code enthalten, der nötig ist, um die Tests zu bestehen.
Die Stub-Datei sollte eine fast funktionierende Lösung für die Tests enthalten, aber mit „Goodbye, Mars!“ statt „Hello, World!“. Tipp: Du kannst die Beispiellösung einfach kopieren, einfügen und anpassen.
Wenn du mit der Übung fertig bist, füge bitte deinen GitHub-Benutzernamen zum Array "authors" in der Datei .meta/config.json der Übung hinzu. So stellen wir sicher, dass du korrekt als Ersteller der Übung genannt wirst.
Um zu überprüfen, ob die Übung korrekt eingerichtet ist, kannst du die eingebaute Lint-Funktion des configlet-Tools verwenden.
Der erste Schritt ist, das Tool configlet herunterzuladen. Dafür haben wir zwei Skripte erstellt:
bin/fetch-configlet: führe dies unter *nix oder macOS ausbin/fetch-configlet.ps1: führe dies unter Windows ausWenn du eines dieser Skripte im Stammverzeichnis des Track-Repos ausführst, wird die Binärdatei bin/configlet bzw. bin/configlet.exe heruntergeladen.
Anschließend kannst du die Übung auf Korrektheit prüfen, indem du bin/configlet lint ausführst.
Wahrscheinlich meldet configlet folgenden Fehler:
The `tags` array is empty:
/path/to/track/config.json
Dieser Fehler wird im Schritt Vorbereitung auf den Start behoben, also entweder:
Der configlet-Workflow führt automatisch configlet lint aus, sobald etwas nach main oder in einen Pull Request gepusht wird.