Java常量定义样式

时间:2015-08-22 13:00:37

标签: java

STYLE 1

public interface Constants{
    String FOO = "foo",
           BAR = "bar",
           ... ;
}

样式2

public interface Constants{
    String FOO = "foo";
    String BAR = "bar";
    ...
}

我曾经在单个界面中声明所有常量。我遵循风格1,因为它更具可读性。我想知道除了可读性之外,这两种风格之间是否存在任何差异。这两种风格有关于性能的问题吗?

注意:我从未实现Constant接口,而是访问了这些常量 Constants.FOO

示例:

public class Main{

    public static void main(String[] args){

        ...
        System.out.println(Constants.FOO);
        ...

    }

}

哪个更好,为什么?

4 个答案:

答案 0 :(得分:4)

  

我遵循风格1,因为它更具可读性。

考虑以下案例,

 private static final String FOO1="foo1", FOO2="foo2", FOO3="foo3",BAR="bar"...//and so on

现在,这实际上是不可读的,而不是检查以下内容,

private static final String FOO1 ="foo1";
private static final String FOO2 ="foo2";
private static final String FOO3 ="foo3";//and so on

现在考虑上述代码的可读性,

constant FOO1 ="foo1";
constant FOO2 ="foo2";
constant FOO3 ="foo3";//and so on

constant FOO1 = "foo1",  FOO2 = "foo2", FOO3 = "foo3";

在阅读第二篇文章时,您可能会错过FOO3也是常数的点,而在第一种情况下,FOO3不变的任何人都会非常注意到这一点。此外,在这两种情况下,内存或执行都没有区别。

如果您专门为常量创建interface而不是使用interface,那么它就是Java中的。{1}}。接口应包含一些实现类必须同意的合同。使用interface只包含常量令人不快

答案 1 :(得分:2)

它们在编译的代码级别上完全相同。没有任何区别。但是,尽量避免这种模式。在解释为什么不鼓励它之前,已经给出了几个答案。

如果您不打算实现常量接口,那么至少将常量放在final类中会更有意义。

答案 2 :(得分:2)

您根本不应在interface中定义常量。 It is bad practice。而是在类中定义逻辑上合适的每个常量。

此外,此类常量应为static final。这样,您只需要一个常量实例,而不是在整个代码中定义新实例,这会影响性能。

编辑:如注释中所述,根据定义,接口常量为static final。但是,如果在适当的位置定义它们,则值得注意这一点作为提示。

答案 3 :(得分:1)

首先在其中声明其自己的类中的所有常量。不要将它们分组在一个界面中,这是一个糟糕的设计。

  

我想知道除了可读性之外,这两种风格之间是否存在任何差异。

除了可读性之外没有区别。

  

这两种风格有关于性能的问题吗?

没有。相同。编译为相同的字节代码。

  

哪个更好,为什么? 。

仅限可读性方面的最佳选择。同样,更喜欢最好的可读方式。我更喜欢第二个。