Come affrontare i parametri inutilizzati in un file di parametri definito dall'utente?

3

Ho un codice scientifico che ha un file parameters.txt. Questo file contiene oltre 50 parametri con valori predefiniti associati. L'utente deve modificare i parametri per adattarsi alla particolare simulazione che vogliono eseguire.

Ecco un caso specifico: ci sono circa 7 opzioni per creare un reticolo di siti e assegnare energie al reticolo.

Tuttavia, ci sono anche opzioni per leggere le energie da un file. Se questa opzione viene utilizzata, non sono necessarie le 7 opzioni relative al modo in cui le energie sono assegnate al reticolo.

La mia domanda è qual è il modo migliore per gestire le opzioni non utilizzate. Se ho assegnato le opzioni predefinite a questi parametri, potrebbe confondere l'utente in quanto potrebbe non rendersi conto che non vengono utilizzati.

Potrei anche mettere da parte una parola chiave che l'utente deve usare con quei parametri specifici per indicare che non vengono utilizzati e lanciare un errore se non sono specificati come tali. Ciò seguirebbe il principio del minimo stupore. Tuttavia, questo costringerebbe anche l'utente a modificare più parametri. C'è un modo migliore per affrontare questo problema?

    
posta user2267258 16.07.2018 - 17:49
fonte

2 risposte

2

Hai due problemi:

  • hai bisogno della possibilità di dire "fai il default" nel file di configurazione degli utenti
  • Devi comunicare in qualche modo all'utente, quali sono i valori predefiniti

Un modo semplice per farlo (più semplice se usi JSON per il tuo file di configurazione, ma anche possibile altrimenti):

Hai due file di configurazione

  • Configuration.My.json,
  • Configuration.Defaults.json

L'USER crea e modifica Configuration.My.json. Possono eliminare tutti gli elementi dal file che desiderano o assegnare loro un valore 'null' per farli assumere come predefinito.

E automaticamente emette dal programma un Configuration.Defaults.json proprio accanto ad esso, così l'utente può facilmente vedere quali opzioni (almeno i nomi) sono disponibili.

Anche il tuo Configuration.Defaults.json potrebbe contenere commenti (ok - forse yaml meglio di json per questo) dicendo quali sono i possibili valori per ogni opzione e il significato dell'opzione.

    
risposta data 17.07.2018 - 00:30
fonte
2

Mi piacciono i linguaggi di dati strutturati per questo. Il mio preferito è json ma xml lo farà in un pizzico. L'idea è che le opzioni condizionali diventano opzioni secondarie necessarie quando esiste il genitore.

Idealmente puoi offrire una configurazione guidata che accompagna l'utente attraverso le scelte e crea il file di configurazione.

Se puoi assumere che tutti i tuoi utenti siano scimmie di codice, puoi anche risolvere il problema con un DSL e lasciare che l'IDE dica all'utente cosa può o non può fare.

    
risposta data 16.07.2018 - 21:05
fonte

Leggi altre domande sui tag