Come posso sapere quando un argomento del programma dovrebbe essere una variabile di configurazione?

6

In casi semplici riesco a vedere subito quale direzione andare. Se sto passando una directory di lavoro al mio programma, ed è lo stesso per la maggior parte delle esecuzioni, rendi una variabile di configurazione.

Al contrario, se devo modificare una configurazione per ogni singola esecuzione del programma, probabilmente dovrebbe essere un argomento.

Cosa succede se le cose vivono in un'area grigia? A cosa dovrei prestare attenzione quando decido l'uno o l'altro?

NOTA: sto specificatamente lavorando su un programma di console che potrebbe essere demonizzato in ogni momento. Tuttavia, sono interessato a questa domanda in generale.

    
posta AlexLordThorsen 04.12.2014 - 03:09
fonte

1 risposta

21

Nulla impedisce che gli argomenti della riga di comando vengano utilizzati all'avvio di un demone, o che i file di configurazione vengano utilizzati in modalità interattiva.

L'approccio generale che funziona bene e molti programmi usano è quello di avere un elenco di modi prioritari per impostare le opzioni del programma:

  1. Impostazioni predefinite
  2. Configurazioni globali (/ etc o HKLM nel registro)
  3. Configurazioni locali (home directory o HKCU nel registro)
  4. Variabili d'ambiente
  5. Argomenti del programma
  6. Opzioni impostate mentre il programma è in esecuzione in modo interattivo

Il programma inizierà dal punto 1 e imposterà i valori in ogni fase, sostituendo i valori precedenti, se applicabile.

Non c'è motivo per cui questo dovrebbe funzionare in modo diverso in base al programma in esecuzione in modo interattivo, in background, al prompt dei comandi, in una GUI o come un demone.

Questo è il modo in cui gli utenti e gli amministratori più esperti si aspettano che un programma funzioni.

    
risposta data 04.12.2014 - 04:22
fonte

Leggi altre domande sui tag