Alcune volte ho testi che appaiono in posti diversi, come commenti, messaggi ... Per esempio se ho un'eccezione personalizzata, probabilmente doc di classe, i messaggi che passano come parametro al suo costruttore avranno le stesse frasi (qui This exception throws under situation1
):
/**
* This exception throws under situation1 ...
*
*/
public class SomeException extends Exception {
public static class Builder{
String message = "This exception throws under situation1. So ... ";
public Builder(String message) {
this.message = this.message + "\r\n" + message;
}
public SomeException build(){
return new SomeException(this);
}
}
private SomeException(String detailMessage) {
super(detailMessage);
}
public SomeException(Builder builder) {
this(builder.message);
}
}
E anche i documenti di ciascun metodo che genera un'eccezione avranno la stessa frase:
/**
* @throws SomeException
* This exception throws under situation1 ...
*/
private void test() throws SomeException {
throw new SomeException.Builder("message").build();
}
Se faccio copia / incolla frase, la manutenzione dei documenti sarà difficile (è necessario trovare e aggiornare tutte le ripetizioni su ogni modifica).
Per risolvere questo, posso usare una stringa costante che il suo valore e il suo commento siano quei termini ripetitivi
/**
* exception throws under situation1
*/
public static final String CONSTANT = "exception throws under situation1";
e riferimento ad esso (ed è un commento):
/**
* {@link MyClass#CONSTANT}
*/
String message = MyClass.CONSTANT;
Ma come organizzare le costanti quando ne esistono più di una? Per quanto riguarda questa risposta e questo , sembra che il modo migliore per organizzarli sia utilizzare Enum
:
public enum Meta {
/**
* exception throws under situation1
*/
CONSTANT("exception throws under situation1");
private String text;
Meta(String text) {
this.text = text;
}
public String getText() {
return this.text;
}
}
Ma c'è un modo migliore di questo? Soprattutto complica il codice.