È buona prassi definire stringhe costanti private che hanno lo stesso nome dei loro valori? Prendi ad esempio il seguente codice.
public class Example {
private static final String FIRST_KEY = "firstKey";
private static final String SECOND_KEY = "secondKey";
private static final String THIRD_KEY = "thirdKey";
private static final String SOME_KEY = "someKey";
private static final String SOME_OTHER_KEY = "someOtherKey";
private static final String BLAH = "blah";
public Map<String, Object> createMap() {
Map<String, Object> map = new HashMap<>();
map.put(FIRST_KEY, getFromDB());
map.put(SECOND_KEY, computeValue2());
map.put(THIRD_KEY, computeValue3());
map.put(SOME_KEY, "any value");
map.put(SOME_OTHER_KEY, new Object());
map.put(BLAH, new Object());
return map;
}
...
}
Credo che questo non aggiunga alcun valore quando sono usati una sola volta (o forse anche due volte). Sono sicuramente più difficili da leggere quando controllo alcuni contenuti generati da JSON dalla mappa. Devo passare alla definizione costante per assicurarmi che la chiave JSON e la chiave della mappa siano effettivamente le stesse. Questa convenzione è stata utilizzata in molti progetti su cui ho lavorato e non ho ancora capito perché. Il refactoring più semplice non dovrebbe essere il motivo se le chiavi non vengono utilizzate troppe volte. A mio avviso, è un uso eccessivo delle costanti di stringa. Le costanti di stringa private sono utili, quando i loro nomi spiegano veramente il contenuto ma in questo esempio non lo fanno (e sono fondamentalmente solo copie).