Dipende dalla vostra applicazione. Come linea di base, il suo buon design prevede l'uso di variabili statiche per contenere i dati di cui avrà bisogno il programma, invece di stringhe e interi di hardcoding in tutto il luogo; Ciò significa che in futuro qualsiasi modifica (ad esempio il colore del carattere wide dell'applicazione) richiederà solo un singolo cambiamento, quindi un ciclo di compilazione e tutto il necessario.
Tuttavia, se queste impostazioni sono configurabili dall'utente, non possono essere codificate in modo rigido, ma devono invece essere lette da una fonte esterna e, dove lo si fa, è una questione di progettazione, complessità e sicurezza.
I file di testo normale sono adatti per una piccola applicazione, in cui la sicurezza è scarsa e le cose sono in chiaro. L'editor di SublimeText e l'editor notepad ++ fanno questo per le loro impostazioni del tema e funziona bene. (Credo che fosse un testo normale, forse sono passati a XML ora)
Un'opzione migliore è XML, in quanto è strutturata, più facile da leggere/analizzare/scrivere. Molti progetti lo usano come opzione. Una cosa da tenere a mente sono i file corrotti, mentre li leggi/scrivendo, se l'utente chiude il programma o la JVM esce casualmente per qualsiasi motivo. Potresti voler guardare cose come i buffer. E gestisci anche FileNotFoundExceptions, se manca il file text/xml.
Un'altra opzione è un file di database di qualche tipo, è un po 'più sicuro, è possibile aggiungere la crittografia a livello di applicazione e si dispone di una moltitudine di opzioni. Grandi programmi che già utilizzano un back-end DB, come MySQL, hanno già un database a portata di mano, quindi crea una nuova tabella e memorizza lì la configurazione.Le piccole applicazioni possono guardare a SQLite come opzione.
Se dovesse risultare necessario modificare queste impostazioni, sarà necessario eseguire una nuova versione anziché modificare questi parametri in un xml e riavviare il sistema. Meglio prevenire che curare. –
Come molte cose questo è un equilibrio. Se pensi che queste proprietà non cambieranno in futuro e lo sforzo di metterle in una proprietà (leggere, iniettarle) è più che banale, metterle in una classe. Una domanda da porsi è: quando una costante diventa configurazione esterna? – Augusto
Normalmente utilizzo i file di proprietà. E quando una definizione di proprietà non viene trovata in un file di proprietà, utilizzo un valore predefinito hardcoded come fallback. – h3nrik