例如:
public void doSomething() {
final double MIN_INTEREST = 0.0;
// ...
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我宁愿看到这些替换常量在类级别静态声明.我想我正在寻找关于这个问题的"行业观点".
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
我自己也使用过这种方法作用域常量,但有时同事会在代码审查期间修改它。同样,这些同事不喜欢阅读/编写开源软件,但他们习惯于企业软件。
我告诉他们,如果在单个方法中使用类级别常量,那么使用它是没有意义的,但我发现不止一位同事坚持将其向上移动。我通常会遵守,因为我并不那么严格,除非它影响可读性和/或性能。