Questo documento spiegherà come aggiungere un nuovo esercizio pratico.
Il modo più semplice per verificare quali esercizi pratici non sono ancora stati implementati è andare alla pagina di build della traccia (ad esempio https://exercism.org/tracks/csharp/build) e controllare la sezione "Esercizi pratici".
I dati nella pagina di build vengono aggiornati una volta al giorno.
Puoi creare rapidamente lo scheletro di un nuovo esercizio pratico eseguendo lo script bin/add-practice-exercise (sorgente) dalla directory principale della traccia:
bin/add-practice-exercise <exercise-slug>
Se vuoi, puoi anche specificare la difficoltà dell'esercizio (tramite -d) e/o il nome utente GitHub dell'autore (tramite -a):
bin/add-practice-exercise -d 3 -a foobar <exercise-slug>
Se stai lavorando a un repo di una traccia senza questo file, sentiti libero di copiarlo nel tuo repo usando il link al sorgente qui sopra.
Una volta creati i file dello scheletro, dovrai:
.meta/config.json dell'esercizio:
authors
config.json della traccia:
practices (necessario solo se la traccia ha esercizi concettuali)prerequisites (necessario solo se la traccia ha esercizi concettuali)Una parte fondamentale dell'aggiunta di un esercizio è aggiungere i test. In linea di massima, ci sono due opzioni quando si aggiungono i test per un esercizio pratico:
canonical-data.json dell'esercizio, come si trova nel repo problem-specifications.https://exercism.org/exercises/<slug> per avere una panoramica di quali tracce hanno implementato un dato esercizio).La seconda opzione può essere particolarmente allettante, perché può darti risultati rapidamente. Tieni però presente che dovresti ritoccare l'implementazione per adattarla al meglio alla tua traccia. Ad esempio, alcune tracce non usano classi e lavorano solo con funzioni. Se invece la tua traccia di solito lavora con oggetti, dovresti adattare l'implementazione a ciò che si adatta meglio alla tua traccia.
Alcune tracce usano un generatore di test per (ri)generare automaticamente i file di test di un esercizio. Controlla la documentazione della traccia per vedere se esiste un generatore di test e, in tal caso, come usarlo.
Per garantire che sia possibile scrivere codice che superi i test, è necessario aggiungere un'implementazione di esempio.
Il codice non deve essere idiomatico, deve solo superare i test.
Puoi verificare che l'implementazione di esempio superi tutti i test eseguendo lo script bin/verify-exercises (sorgente) dalla directory principale della traccia:
bin/verify-exercises <exercise-slug>
Usa l'output per verificare che l'implementazione di esempio superi tutti i test.
Se stai lavorando a un repo di una traccia senza questo file, sentiti libero di copiarlo nel tuo repo usando il link al sorgente qui sopra.
Dietro le quinte, lo script bin/verify-exercises fa diverse cose:
I file stub dell'implementazione forniscono un punto di partenza per gli studenti.
Consigliamo che i file stub contengano la quantità minima di codice affinché:
In pratica, questo significa definire le funzioni/metodi testati dalla suite di test. Le tracce sono libere di impostare questo codice come preferiscono, purché si assicurino che il codice stub inizialmente fallisca tutti i test.
Python:
def two_fer(name):
pass
Kotlin:
fun twofer(name: String): String {
TODO("Implement the function to complete the task")
}
L'ultimo passo è eseguire il linter per verificare che i file (di configurazione) della traccia siano strutturati correttamente: sia sintatticamente che semanticamente.
Per prima cosa, assicurati di avere la versione più recente di configlet eseguendo:
bin/fetch-configlet
Poi esegui il linter con:
bin/configlet lint
Usa l'output per verificare che vada tutto bene.
Una volta che tutto va bene, puoi inviare una Pull Request al repository della traccia.
Prima di inviare, leggi la guida alle Pull Request per i contributori e la guida alle Pull Request.
Assicurati che la descrizione della PR indichi l'esercizio che viene aggiunto.