等号(和其他)在常数中

时间:2016-12-14 14:14:18

标签: coding-style

我目前正在重构从其他开发人员继承的代码库。在几个类中,我发现包含符号=,?的常量?和& (和别的)。它们用于构建URL,如下所示:

class SomeClass {
    private static final String EQUALS = "=";
    private static final String AMPERSAND = "&";
    private static final String QUESTION_MARK = "?";
    private static final String FORWARD_SLASH = "/";
    // ...

    public String getSomeURL() {
        return ProjectConstants.BASE_URL + entityName + FORWARD_SLASH + 
             anotherName + QUESTION_MARK + parameterName + EQUALS + parameterValue;
    }
}

我没有看到这个的好处。这种风格的原因是什么,而不仅仅是写variable + '/' + variable + "?parameterName=" + parameterValue

2 个答案:

答案 0 :(得分:3)

常量很有用,但命名很差。如果它们在URL构造中使用,则它们的名称应如下所示:

private static final String PARAMETER_ASSIGNMENT = "=";
private static final String PARAMETER_SEPARATOR = "&";
private static final String QUERY_INTRODUCER = "?";
private static final String PATH_SEPARATOR = "/";

这样,他们的名字将引用他们的语义(他们应该),而不是他们的内容(整个点是 abstract 远离内容!)。

getSomeURL()的代码将更直接地表明其真正的作用:

public String getSomeURL() {
    return ProjectConstants.BASE_URL + entityName +
           PATH_SEPARATOR + anotherName +
           QUERY_INTRODUCER +
               parameterName + PARAMETER_ASSIGNMENT + parameterValue;
}

答案 1 :(得分:0)

我认为这里没有任何深层技术原因

我看到的唯一的东西:他们会像#34; =="不太可能发生,因为EQUALS + EQUALS显然更明显。

另一方面,这在现实中并不重要;因为实际上你会调用 helper 方法来构建这些URL。所以,一旦你得到了正确的帮助,很少有机会在那个"生成"内容。

但即便如此,我也不会使用String常量而是使用char值。

相关问题