Come faccio a mantenere la coerenza tra i valori codificati in file diversi?

4

Ho un file sorgente C e un altro file (non codice) in un progetto che contiene lo stesso valore hard-coded. Idealmente, il valore verrà specificato in una sola posizione e verrà copiato automaticamente nell'altra posizione durante il processo di generazione. Non è difficile pensare a modi scaltri per realizzare questo compito, ma voglio sapere se esiste un modo comune per farlo.

Quale metodo o approccio standard dovrei utilizzare per garantire che i due valori rimangano coerenti? In altre parole, come dovrei mantenere la coerenza in modo non hacker?

    
posta user31765 15.02.2014 - 03:55
fonte

3 risposte

4

the value would be specified in only one location and be copied to the other location automatically during the build process

Questo è esattamente il modo di risolvere il problema - ma devi decidere in quale posizione vuoi mantenere i valori, e quale posizione è quella in cui solo la copia "vive". Dovresti anche prendere delle precauzioni che nessuno inizi a modificare i valori nella copia (ad esempio aggiungendo un BIG in cima all'elenco come questi valori sono generati automaticamente - non cambiarli manualmente .

Ecco alcuni modi in cui ho risolto requisiti simili in passato per conto mio:

  • mantiene i valori in un foglio Excel e aggiunge una macro VBA per generare tutti i file di destinazione da lì (come il tuo codice C e il tuo file non di codice)

  • mantiene i valori in un file di intestazione nel codice, includi quel file di intestazione in uno strumento generatore che produce il file non di codice e compila ed esegue quel generatore all'interno del tuo processo di compilazione

  • mantengono i valori direttamente nel file di testo non di codice (presupponendo che sia leggibile dalla macchina) e generano il codice C come un'intestazione includibile da lì, utilizzando alcuni script scritti nel tuo linguaggio di scripting preferito.

risposta data 15.02.2014 - 10:01
fonte
2

Evita i valori hard coded nei tuoi programmi - essi dovranno cambiare a un certo punto in modo da renderli facili da modificare (anche se sono compilati in un eseguibile, a un certo punto dovrai cambiarli, a meno che non siano costanti universali come Pi, o la velocità della luce). Inoltre cambieranno spesso tra gli ambienti, quindi rendili facili da mantenere inserendoli in un file o in un database.

Non hai specificato quale sia l'altra posizione, ma hai alcune opzioni,

  1. usa un file di parametri - questo potrebbe essere un file di intestazione che il "altro" processo può leggere se, per motivi di prestazioni, deve essere pre-compilato nell'eseguibile o letto durante l'inizializzazione del programma.
  2. memorizza i valori in un database: ciò consentirebbe di crittografare il valore se necessario (ad es. è una stringa di connessione).
  3. Passali al programma in fase di esecuzione come argomenti di avvio. Potresti quindi scrivere uno script wrapper da leggere dalla sorgente "other" per eseguire il programma con questi argomenti.
risposta data 15.02.2014 - 09:35
fonte
1

Alcuni linguaggi di alto livello sono abituati a impostare valori nel codice - i valori insieme al codice sono denominati script. Ma C non appartiene a queste lingue. Quindi, leggi semplicemente i valori dal file.

Naturalmente, ci saranno alcune costanti hard set - che identificano per nome questi valori dal file. Ad esempio, se leggi file XML o di proprietà, dove sai dai tag / nomi? È solo il tuo caso.

Ma dovresti provare a spostare i valori duri sui file, fino a quando l'esportazione di questi valori non è troppo costosa.

    
risposta data 15.02.2014 - 17:59
fonte

Leggi altre domande sui tag