'的Java命名约定;私人决赛';类字段&;它们的使用

'的Java命名约定;私人决赛';类字段&;它们的使用,java,naming-conventions,compile-time-constant,Java,Naming Conventions,Compile Time Constant,我在复习一位同事写的代码,他是我的大四学生。在单元测试类中,他使用了私有final类变量,如下所示: public class SomeProcessingServiceUT { private final String modelNumber = "ABC01"; private final String serialNumber = "000002"; private final String PrimaryId = "15033520583"; privat

我在复习一位同事写的代码,他是我的大四学生。在单元测试类中,他使用了
私有final
类变量,如下所示:

public class SomeProcessingServiceUT {
    private final String modelNumber = "ABC01";
    private final String serialNumber = "000002";
    private final String PrimaryId = "15033520583";
    private final String CheckinTime ="20021010:00-05";
.....
}
他所做的只是访问所有这些变量,比如
this.modelNumber
等等,而不是别的


我想质疑他的意图,为什么他不使用static声明纯常量,为什么他使用这样的混合命名。但我想在这里与社区分享我的疑虑。这有点令人困惑。任何智慧都会有帮助。

关键字static不会使其成为常数,它用于附加在类上而不是对象上的变量。简单地说:对于您创建的每个对象,变量的值都是相同的。问题是,如果你说classname.variable,你可以改变这个变量的值,因此它不是一个常量变量

一般来说,您希望避免使用静态,它不一定是非常糟糕的编程,但是如果您不绝对需要,就不应该使用它。此外,几乎没有需要静态变量的情况,在大多数情况下,可以通过更好的类设计来避免


回答你的问题,不,将该变量声明为静态变量没有多大意义,但我可能错了,因为我不知道他还想对该类做什么。

你问过他吗?@Jacob我很快会问他。但我首先想知道这是否是一种不好的做法?仅凭这段代码很难猜测您同事的意图。断章取义,这看起来很愚蠢,但他很可能有他的理由。如果他只是想读取声明类实例中的字段,那么我认为没有理由将它们设置为静态。在我看来,使用final必须被看作是对Java约定的一个很好的使用。有人对你的答案投了反对票。我同意你的观点,静态不应该因为内存泄漏而被滥用。但是与你所说的相反,当有许多对象实例使用static和private&final时,它们被用来创建应用程序范围内的常量。是的,我犯了一个错误,当然你可以使用static来创建常量,但我的实际意思是,关键字static并没有使它成为一个常量变量,这是我的工作最终的