È buona prassi di programmazione memorizzare le chiavi delle proprietà java in ENUM per la convalida dopo l'avvio dell'applicazione?

1

Esempio di file delle proprietà Java che viene letto dalla classe delle proprietà

appl.component1.property1=value1

appl.component1.property1=value2

Classe personalizzata che estende la classe java.util.Properties aggiungendo comportamenti per generare un'eccezione quando una proprietà richiesta non è disponibile.

public class Configuration extends Properties {
    @Override
    public String getProperty(String key) {
        String value = super.getProperty(key);
        if (value == null) {
            throw new InvalidParameterException(MessageFormat.format(
                    "Value missing for key {0}!", key));
        }
        return value;
    }

}

Carica il file delle proprietà e recupera le coppie di valori chiave per la convalida iniziale.

PropertiesExcep properties =  new PropertiesExcep();
properties.load("file://foobar");
for(PropertyKeys key: PropertyKeys.values()){
 properties.getProperty(key.getValue())
}

Enum utilizzando le chiavi delle proprietà

public enum PropertyKeys{
    PROP1("appl.component1.property1"),
    PROP2("app1.component1.property2");

private String value;

PropertyKeys(String in){
value = in_text;
}

public String getValue(){
return value;
}
}
    
posta VishAmdi 22.12.2016 - 22:59
fonte

2 risposte

1

La risposta alla tua domanda dipenderà da alcune cose:

  • L'essere più grande: avrai mai bisogno di aggiungere / rimuovere una chiave in fase di runtime?

    Se è così, allora è improbabile che un enum sia la strada da percorrere - i valori dovrebbero rimanere costanti, e questo in seguito porterà a un brutto codice. Accedere direttamente alle chiavi dall'oggetto Properties sarebbe molto più semplice.

  • Come userete i tasti?

    Se hai intenzione di codificare le chiavi molto, questo potrebbe risparmiare un bel po 'di tempo e fatica. Altrimenti è solo un giro di tempo.

  • Vale la pena avere una variabile per ogni chiave?

    Se utilizzerai molte chiavi, diventerà un disastro e un problema da mantenere.

Per riassumere: non è un anti-pattern - non c'è una regola impostata, se non ti farà risparmiare tempo, chiarire il codice o ridurre la difficoltà - non vale la pena farlo. Se ti ostacolerà in futuro diventando un dolore da usare - è una cattiva pratica.

    
risposta data 27.12.2016 - 02:41
fonte
0

La risposta alla tua domanda, è positivo avere la convalida perché esternalizzi la configurazione dell'applicazione e ora le funzioni dell'applicazione dipendono dalla configurazione nel file delle proprietà. Sì, enum è una scelta ovvia per memorizzare le chiavi.

Eventuali modifiche alle chiavi del file delle proprietà avranno un impatto sulle funzioni dell'applicazione. La validazione proteggerà la nostra applicazione da modifiche accidentali nel file delle proprietà.

    
risposta data 01.01.2017 - 21:20
fonte

Leggi altre domande sui tag