我可以(安全地)给出一个与方法名称相同的变量吗?

时间:2012-08-23 01:46:36

标签: java coding-style

在我的java代码中,我做了类似的事情:

int sleep = 0;
sleep(sleep);
sleep++;

我的老板指出,这不好。它无法在PHP中正常工作。

在java中使用上面的代码是否存在任何问题/危险?

4 个答案:

答案 0 :(得分:5)

没有危险,因为如果没有参数的括号,方法将永远不会被引用,因此名称永远不会发生冲突。

然而,如果方法名称是动词而变量名称是名词,则通常更清晰,更直观,例如:

int sleepMillis = 0;
sleep(sleepMillis);
sleepMillis++;

答案 1 :(得分:2)

没有语法上的理由说明为什么你不能这样做,但作为一般的开发原则,如果你没有使用相同的名称,为了清晰起见,通常会更清楚。

答案 2 :(得分:1)

我之前从未尝试过,但我认为它可以正常工作,因为Java应该能够区分变量和方法之间的差异。它应该工作,但像这样的代码令人困惑。不要使变量名称与您将使用的方法匹配。

答案 3 :(得分:1)

至少可以说,这令人困惑。这不是一个问题,因为编译器会指向您,如果您尝试使用预期变量的方法(反之亦然),这要归功于Java是静态类型的。

在具有一阶函数的动态类型语言中,相同的代码会更成问题,实际上变量可以指向函数或值,直到运行时才能区分它们。