/ / Оптимална дължина на име на променлива на Java от гледна точка на четливост - java, променливи, четене на код

Оптимална дължина на име на Java променлива от гледна точка на четливостта - java, променливи, кодова четимост

Помислете за константата в следния фрагмент на 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:

Глава 11. Силата на променливите имена

Как бихте предложили да балансирам дължината на името на променливата спрямо четливостта на кода?

Отговори:

3 за отговор № 1

Ако вместо // коментар, използвате / ** коментар(тоест javadoc), когато един програмист използва вашата константа от IDE или гледа вашия javadoc, той ще получи пълни обяснения за всички плюсове и минуси на такъв дизайн, защо е направено по този начин и т.н.

За съжаление не можете да го наречете „CUSTOMER_ID_THAT_IS_A_STRING_BECAUSE_IF_IT_WAS_AN_INT_IT_WOULD_BE_TOO_LARGE“.