Estou trabalhando em um aplicativo com muitas constantes. Na última revisão de código, constatou-se que as constantes estão muito dispersas e devem ser organizadas em um único arquivo de constantes "principais". A discordância é sobre como organizá-los. A maioria considera que o uso do nome constante deve ser bom o suficiente, mas isso levará a um código parecido com este:
public static final String CREDITCARD_ACTION_SUBMITDATA = "6767";
public static final String CREDITCARD_UIFIELDID_CARDHOLDER_NAME = "3959854";
public static final String CREDITCARD_UIFIELDID_EXPIRY_MONTH = "3524";
public static final String CREDITCARD_UIFIELDID_ACCOUNT_ID = "3524";
...
public static final String BANKPAYMENT_UIFIELDID_ACCOUNT_ID = "9987";
Acho esse tipo de convenção de nomenclatura complicado. Eu pensei que poderia ser mais fácil usar a classe aninhada pública e ter algo como isto:
public class IntegrationSystemConstants
{
public class CreditCard
{
public static final String UI_EXPIRY_MONTH = "3524";
public static final String UI_ACCOUNT_ID = "3524";
...
}
public class BankAccount
{
public static final String UI_ACCOUNT_ID = "9987";
...
}
}
Essa ideia não foi bem recebida porque era "muito complicada" (não obtive muitos detalhes sobre por que isso pode ser muito complicado). Eu acho que isso cria uma divisão melhor entre grupos de constantes relacionadas e o preenchimento automático facilita a localização também. Eu nunca vi isso feito, então estou me perguntando se essa é uma prática aceita ou se há melhores razões para que isso não deva ser feito.