Considere a constante no seguinte snippet Java:
public class ConsumerServiceTestFixture {
private ConsumerServiceTestFixture() {
throw new AssertionError("This class should not be instantiated");
}
public static final String CUSTOMER_ID_NOT_INTEGER = "12345678901";
}
A constante CUSTOMER_ID_NOT_INTEGER acima é usado para armazenar uma String que não pode ser convertida em um Integer porque seu valor é maior que Integer.MAX_VALUE.
Isso não é aparente a partir do nome da variável que transmite, na melhor das hipóteses, que o valor é um customer_id "inválido". Nada é comunicado sobre porque o valor é inválido.
Uma opção seria escrever um comentário que diz algo como:
// Invalid since this number is greater than Integer.MAX_VALUE
public static final String CUSTOMER_ID_NOT_INTEGER = "12345678901";
No entanto, se tivéssemos que escrever código autodocumentado e não usar comentários, a única outra opção seria tornar o nome da variável mais descritivo. Algo como :
public static final String CUSTOMER_ID_GREATER_THAN_INTEGER_MAX_VALUE = "12345678901";
Mas, com a opção acima, não estou satisfeito com o comprimento do nome da variável, especialmente se você considerar o seguinte trecho sobre o comprimento ideal do nome da variável do Código Completo 2:
Como você sugere que eu equilibre o comprimento do nome da variável e a legibilidade do código?
Respostas:
3 para resposta № 1Se em vez de // um comentário você usar um / ** comentário(isto é, javadoc), quando um programador usa sua constante de um IDE ou olha seu javadoc, ele obterá explicações completas de todos os prós e contras de tal projeto, por que foi feito dessa forma etc.
Infelizmente, você não pode chamá-lo de "CUSTOMER_ID_THAT_IS_A_STRING_BECAUSE_IF_IT_WAS_AN_INT_IT_WOULD_BE_TOO_LARGE".