您对方法范围常量有何看法?

Lig*_*ggy 27 java constants

例如:

public void doSomething() {

    final double MIN_INTEREST = 0.0;

    // ...  
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我宁愿看到这些替换常量在类级别静态声明.我想我正在寻找关于这个问题的"行业观点".

chi*_*s42 35

我认为如果它们被多种方法使用,你应该只将它们放在类级别.如果它只用于那种方法,那对我来说就好了.


Chr*_*ore 18

我的起始位置是每个变量或常量应该被声明/初始化为尽可能接近它的第一次使用/实际(即不要将代码的逻辑块分成两半,只是为了声明几行),并且作为范围尽可能紧密. - 除非你能给我一个很好的理由,为什么它应该是不同的.

例如,在公共API中不会显示方法作用域final.有时这些信息可能会对您的班级用户有用,并且应该向上移动.

在你在问题中给出的例子中,我会说MIN_INTEREST可能是用户想要得到的那些信息之一,它应该是范围的,而不是方法.(虽然示例代码没有上下文,但我的假设可能完全错误.)


小智 9

从技术上讲,Java中没有"方法作用域常量"这样的东西.你所指的只是一个最终的局部变量; 它是使用每个方法调用创建的.

http://www.java-tips.org/java-se-tips/java.lang/how-do-i-declare-a-constant-in-java.html

  • 损坏的网址。是否有证据表明它会在每次方法执行时重新声明? (2认同)

anj*_*anb 6

我自己也使用过这种方法作用域常量,但有时同事会在代码审查期间修改它。同样,这些同事不喜欢阅读/编写开源软件,但他们习惯于企业软件。

我告诉他们,如果在单个方法中使用类级别常量,那么使用它是没有意义的,但我发现不止一位同事坚持将其向上移动。我通常会遵守,因为我并不那么严格,除非它影响可读性和/或性能。