Specifica delle opzioni "hard coded", in una lingua interpretata

1

In una lingua come Python o JavaScript (NodeJS), c'è qualcosa di sbagliato nel definire "il file di configurazione" come un file che essenzialmente codifica le impostazioni di configurazione? Ad esempio:

options.py:

OUTPUT_DIRECTORY = 'out'
LOGLEVEL = 'debug'

options.js:

outputDirectory = 'out';
logLevel = 'debug';

Questo conta come opzioni "hard-coding"? Quando sarebbe inappropriato aspettarsi che un utente configuri il software in questo modo? C'è qualche vantaggio nell'usare un formato di configurazione tradizionale (ad esempio, ini file) che viene analizzato in fase di esecuzione?

    
posta Steve Bennett 26.07.2013 - 06:21
fonte

2 risposte

2

Non vedo nulla di sbagliato in questo approccio. È molto conveniente in linguaggi come Javascript, PHP, ecc. E probabilmente accelera le cose rimuovendo la necessità di analizzare & caricare i valori di configurazione.

Se è la strada da percorrere è una domanda diversa. Nel software che dovrebbe essere configurato da un programmatore - fondamentalmente software in cui l'utente finale è un programmatore, come un CMS che viene installato su un server, funzionerebbe correttamente. Nel software che si aspetta un utente non tecnico per apportare modifiche alla configurazione ... probabilmente non è una buona idea. Ad esempio, app desktop scritte in Python.

    
risposta data 26.07.2013 - 07:54
fonte
2

Questo è esattamente come è stato fatto in Django.

Un vantaggio rispetto ad es. I file INI sfruttano tutta la potenza e l'espressività della lingua nella configurazione, consentendo di generare impostazioni programmaticamente e trucchi come rendendo la configurazione dipendente da dove è in esecuzione l'applicazione .

Tuttavia, questo potere ha un costo. Ti impedisce di offrire in modo sicuro qualsiasi metodo altro del file di configurazione per modificare le impostazioni (ad esempio tramite una finestra di dialogo "Opzioni"), a meno che:

  1. La tua applicazione può decifrare il significato di codice arbitrario (che I think è impossibile , anche se non sono abbastanza un teorico per esserne sicuro), o

  2. Hai un metodo alternativo per memorizzare le opzioni di configurazione impostate dall'interno dell'applicazione (e poi devi decidere quale di queste ha la precedenza in caso di conflitto).

Se ti senti a tuo agio nell'offrire un file di configurazione come unico modo di configurare la tua applicazione, ciò suggerisce che consideri i tuoi utenti competenti a modificare un file contenente un semplice elenco di coppie chiave / valore. Ne consegue che non c'è ragione per cui sarebbero meno capaci di gestirlo con, ad es. Assegnazioni Python piuttosto che con file in formato INI e allo stesso tempo puoi offrire agli utenti esperti tecniche di configurazione molto più potenti.

    
risposta data 26.07.2013 - 08:20
fonte

Leggi altre domande sui tag