0

考虑以下 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 的 String,因为它的值大于 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"; 

但是,使用上述选项,我对变量名的长度不满意,特别是如果您考虑以下代码完成 2 中关于最佳变量名长度的片段:

第 11 章 变量名的威力

你会建议我如何平衡变量名的长度和代码的可读性?

4

1 回答 1

3

如果您使用 /** 注释而不是 // 注释(即 javadoc),当程序员从 IDE 使用您的常量或查看您的 javadoc 时,他将获得有关此类优缺点的完整解释一个设计,为什么这样做等等。

不幸的是,您不能将其命名为“CUSTOMER_ID_THAT_IS_A_STRING_BECAUSE_IF_IT_WAS_AN_INT_IT_WOULD_BE_TOO_LARGE”。

于 2012-07-24T16:24:09.807 回答