L'idea di base è che tu NON controlli i valori riservati nel codice o nel file binario compilato. Soprattutto se il progetto è open source, davvero non dovresti. Esistono diverse strategie di configurazione che puoi adottare per fare ciò:
Segnaposto nel codice (valori hardcoded)
Segnaposto nel codice - come suggerito - che è la più sana e semplice da fare nei linguaggi di programmazione dinamici poiché il codice è facile da modificare (senza bisogno di compilare). Ho visto un sacco di progetti open source come MediaWiki con il suo LocalSettings.php
.
Il lato negativo di questa strategia è che la chiave è hardcoded. Quindi se il programma è distribuito come binario, avere la chiave codificata non lo rende particolarmente mantenibile.
File di testo di configurazione
Puoi farlo anche implementando file di testo di configurazione , ovvero il programma / applicazione cerca un file di configurazione e legge i valori da esso. È possibile effettuare il check-in di una configurazione di esempio con segnaposto ma avere la configurazione effettiva locale nella macchina.
Nel tuo caso puoi creare un file di testo key.conf
con la chiave effettiva, lasciare che il programma usi quel file e lasciarlo ignorare dal controllo di versione. Puoi, per essere d'aiuto, controllare un file di testo key.conf.example
con una chiave falso e controllare l'ingresso. Assicurati che il tuo programma / applicazione invii un messaggio di errore utile
per l'utente di aggiungere la chiave effettiva nel file corretto.
Alcuni linguaggi di programmazione dispongono di API che forniscono questo automaticamente per te, come ad esempio:
Se la tua applicazione è un'app di database, considera di inserire la chiave o altre variabili di configurazione nel database. È lo stesso del file di testo di configurazione sopra, ma metti invece tutte le variabili di configurazione come la chiave in una tabella di database.
Attraverso la visualizzazione delle preferenze o un'app di back office
Se il programma è una finestra o un'applicazione web con viste, è anche possibile consentire all'applicazione di creare il file di configurazione, attraverso una vista delle preferenze di sorta. In questo modo non è necessario controllare un file di configurazione di esempio come suggerito sopra.
MediaWiki ha risolto questo problema in modo simile generando automaticamente il file LocalSettings.php
in un processo di installazione iniziale.
Ammettiamo che questa non è un'opzione per i programmi eseguiti esclusivamente come processi, servizi o demoni in background. Comunque è per questo che crei progetti GUI separati per creare un punto di ingresso per le impostazioni di amministrazione e preferenze, in applicazioni web solitamente chiamate Back Office application .