Quando começamos a desenvolver um aplicativo ficamos na dúvida de como organizar as constantes. Muitas vezes, pela praticidade acabamos criando uma classe para guardamos todas as nossas constantes, mas essa seria uma boa abordagem?
Mas o que é constante?
Uma constante é um atributo que depois de ser instanciado não pode ter seu valor alterado.
Criação de uma classe para constantes
Quando criamos uma classe, muitas vezes com sufixo Constants ou Utils perdemos um dos objetivos de responsabilidade única da classe, criando diversos atributos sem fim, além da dificuldade para fazer a manutenção podendo ocasionar inclusive constantes duplicadas o que seria péssimo para nosso projeto.
Caso, no seu projeto justifique criar uma classe para as constantes, opte por uma classe final, ou seja, que não pode ser estendida e com seu construtor privado para impedir que alguém do projeto tente instancia-la:
public final class Constants {
public static String FOO = "foo";
public static String BAR = "Bar";
private Constants() {
}
}
Deixando constantes na própria classe
Se o valor é usado somente pela classe, o ideal é deixar na própria classe:
public class Schedule {
public static int MAX = 2280;
public Schedule() {
}
}
e defina o modificador de acesso mais adequado como privado, publico ou protegido.
O uso de enums no Java
Quando as constantes podem ser enumeradas, podemos usar a definição de enums. Os dias da semana, por exemplo, podem ser enumerados ou agrupados:
public enum DayOfWeek {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
e podem ser usados dessa forma:
private void addFirstDay() {
DayOfWeek fistDayOfWeek = DayOfWeek.MONDAY;
}
e são eficientes em conjunto com switch:
private void addTask(DayOfWeek day) {
switch (day) {
case MONDAY:
addFirstDay();
break;
case THURSDAY:
break;
}
}
o repositório pode ser encontrado em https://github.com/raffaelbrandao/java-constants