Помислете за константата в следния фрагмент на Java:
public class ConsumerServiceTestFixture {
private ConsumerServiceTestFixture() {
throw new AssertionError("This class should not be instantiated");
}
public static final String CUSTOMER_ID_NOT_INTEGER = "12345678901";
}
Константата CUSTOMER_ID_NOT_INTEGER по-горе се използва за съхраняване на низ, който не може да бъде преобразуван в цяло число, тъй като стойността му е по-голяма от Integer.MAX_VALUE.
Това не е видно от името на променливата, която в най-добрия случай предава, че стойността е „невалиден“ customer_id. Нищо не се предава защо стойността е невалидна
Една от възможностите е да напишете коментар, който казва нещо като:
// Invalid since this number is greater than Integer.MAX_VALUE
public static final String CUSTOMER_ID_NOT_INTEGER = "12345678901";
Ако обаче трябваше да пишем код за самодокументиране и да не използваме коментари, единствената друга възможност би била да направим името на променливата по-описателно. Нещо като :
public static final String CUSTOMER_ID_GREATER_THAN_INTEGER_MAX_VALUE = "12345678901";
Но с горната опция не се радвам за дължината на името на променливата, особено ако вземете предвид следния фрагмент за оптималната дължина на името на променливата от Code Complete 2:
Как бихте предложили да балансирам дължината на името на променливата спрямо четливостта на кода?
Отговори:
3 за отговор № 1Ако вместо // коментар, използвате / ** коментар(тоест javadoc), когато един програмист използва вашата константа от IDE или гледа вашия javadoc, той ще получи пълни обяснения за всички плюсове и минуси на такъв дизайн, защо е направено по този начин и т.н.
За съжаление не можете да го наречете „CUSTOMER_ID_THAT_IS_A_STRING_BECAUSE_IF_IT_WAS_AN_INT_IT_WOULD_BE_TOO_LARGE“.