Best practice per l'archiviazione dei parametri del programma c ++

1

Attualmente sto sviluppando un progetto che ha più programmi c ++ che comunicano tra loro su IPC. Ognuno di questi programmi si baserà su alcuni parametri da eseguire e questi potrebbero essere comuni a diversi programmi, ad esempio parametri per la calibrazione della videocamera, minNeighbours, fattore di ridimensionamento, ecc.

Mi sto chiedendo quali sono le migliori pratiche per raggiungere questo obiettivo. Le soluzioni considerate in questa fase sono:

  1. Hardcoding dei valori in - ovviamente non va bene se dovessi voler cambiare i valori dei parametri.

  2. Include un file constants.hpp contenente le definizioni const [int] delle variabili - la mia soluzione corrente.

  3. Un file config.txt che può essere analizzato da ciascun programma all'avvio - più programmi possono tranquillamente aprire e leggere i file contemporaneamente.

  4. Direttive preprocessore, ad esempio #define.

Posso implementare qualsiasi soluzione, sto davvero cercando indicazioni sulle migliori pratiche.

    
posta Andrew Murtagh 24.08.2017 - 10:18
fonte

2 risposte

2

Carica una costante solo da un file di configurazione o da un'altra sorgente di runtime-config se ha effettivamente senso eseguire il programma con valori diversi per il parametro.
Considera di supportare un valore predefinito se non fornito dalla configurazione in cui ha senso.

L'esportazione inutile di una costante in fase di compilazione in una configurazione di runtime rende più complicato e meno efficiente il codice che può andare storto in molti modi rispetto a prima. Desistere.

Quando dovresti nominare un compile-time-costant?

  • Se ha qualche significato semantico accanto a quello che sta per avere un valore specifico, significa che dovresti avere un buon semantico anziché un nome descrittivo per esso.
  • Se lo usi per accordare il tuo codice. Queste costanti ricadono quasi sempre anche nell'altro punto.
risposta data 24.08.2017 - 11:41
fonte
0

Metti la configurazione in una posizione dbase / condivisa o dai a ogni file una copia della configurazione. Ad esempio, quando lo si distribuisce, copia lo stesso file più e più volte

Non ci dovrebbero essere problemi in più di un'applicazione che legge il file (la tua sola lettura da esso) basta aprirlo per l'uso condiviso.

    
risposta data 24.08.2017 - 14:24
fonte

Leggi altre domande sui tag