2012-05-29 11 views
18

Sono un po 'confuso tra l'utilizzo di un file di costanti e di un file di proprietà in Java.Proprietà file vs classe Constants in Java

Come decidere quando utilizzare Constants.java e quando utilizzare un .properties di file?

+1

Perpah puoi avere il meglio di entrambi i mondi usando un [ListResourceBundle] (http://docs.oracle.com/javase/7/docs/api/index.html?java/util/ListResourceBundle.html) –

risposta

23

Utilizzare le costanti con hardwired nel codice Java quando non si desidera che gli utenti/deployers/tester/test li cambino.

Utilizzare un file delle proprietà quando si desidera che sia questa possibilità.

Il punto è che la modifica di una costante cablata nel codice sorgente dell'applicazione comporta la modifica del codice sorgente, la ricostruzione e la ridistribuzione. Al contrario, la modifica di un file di proprietà può essere semplice come sparare a NotePad.

+0

As hai detto che modificare il file delle proprietà è semplice mentre cambiare il file delle costanti ci richiede di ricostruire l'applicazione. Quindi, non dovremmo preferire sempre usare il file delle proprietà? – Anand

+3

Leggi la prima frase ... –

1
  • Costanti - quando non vi occupate di ri-compilare l'applicazione ogni volta che si cambia il valore. Una specie di ironia qui. Perché si cambia qualcosa se è stato chiamato un file costante :)

  • Proprietà - quando si desidera il lusso di semplicemente cambiando il valore e forse riavviare l'applicazione per prendere il cambiamento.

1

In genere, qualsiasi elemento in una classe di costanti è considerato "hardcoded"; cioè, è necessario ricompilare per apportare modifiche.

Utilizzare un file .properties per cose come la configurazione, in cui non è necessario essere obbligati a ricompilare solo per apportare modifiche. In questo modo, puoi semplicemente modificare il file delle proprietà e riavviare l'applicazione.

1

Generalmente si utilizzano i file delle proprietà quando si desidera specificare parametri che variano dalla distribuzione alla distribuzione o nel tempo.

Si utilizzano costanti quando i parametri non sono dinamici e quindi non dovrebbero essere modificati in base a fattori esterni. È necessario ricompilare la classe ogni volta che si modifica un valore.

1

Ci sono molti aspetti diversi da considerare. Il più importante è che

  • è possibile modificare i file delle proprietà e utilizzarlo senza ricompilare l'applicazione;
  • file di proprietà non contengono codice, quindi tutti possono cambiarli senza alcuna conoscenza di Java.

Questi aspetti rendono il file di proprietà davvero utile per la memorizzazione delle configurazioni.

D'altra parte, le classi di costanti devono essere compilate, ma sono "più sicure" se si pianifica di non modificare tali costanti molto spesso.

1

Le costanti sono fisse in fase di compilazione. Quindi se non prevedi alcun cambiamento di valori, le costanti saranno una buona idea.

0

Le proprietà hanno il vantaggio di essere esternalizzabili. È possibile avere un file di proprietà per lo sviluppo, un altro per il test e un altro per la produzione. Molte volte, tuttavia, le proprietà raramente modificate, interne al funzionamento del software, vengono inserite nel file delle proprietà rendendole difficili da gestire.

Le costanti OTOH vengono compilate in modo che eventuali errori vengano rilevati in fase di compilazione.

Quindi la risposta è, dipende. Se i valori nelle proprietà sono veramente modifiche di configurazione che si desidera esternalizzare, utilizzare il file delle proprietà. altrimenti li rendono costanti Java. Si potrebbe finire per utilizzare entrambi, però.

5

mia lista di controllo

file di proprietà:

È configurabile per environemnt ecc

messaggi, etichette ecc

applicabile a particolari situazioni (lista degli stati per le regole eccetera). coppie chiave-valore. può essere modificato da una persona diversa cioè sviluppatore, gli analisti, gli utenti aziendali ecc

costante:

sono costanti. Non configurabile. Principalmente per l'ottimizzazione e il riutilizzo. Per evitare che le chiavi vengano disperse.

Per costanti come SÌ = "sì". Non proprio un valore chiave. Chiavi per cache ecc.

Costanti per garantire che il recupero e l'impostazione utilizzino la stessa chiave anche se da posizioni diverse nell'applicazione, ESEMPIO xyz.put (KeyConstants.SOME_KEY, "somevalue"); xyz.get (KeyConstants.SOME_KEY) di classi diverse, ofcouse xyz in condivisione o singleton.

Problemi correlati