如果实际和形式参数具有相同的名称,是否可以接受?

时间:2013-12-01 23:09:36

标签: java

像这样:

myMethod(first, second)

public void myMethod(int first, int second)

我的老师说不喜欢给他们命名。但我不知道原因是什么?他错了吗?

4 个答案:

答案 0 :(得分:7)

变量应描述它们在自己的上下文中的含义。

例如,在方法上下文(形式参数)中,可以比较1和比较2。但在调用上下文(实际参数)中,它可能是myPyjamasmyAuntsPyjamas。如果它们在两种情况下“意味着”相同的东西那么就是它。

因此,在这个例子中,它们可能不同:

Fanciness comparativeFanciness= comparePyjamas(myPyjamas,myAuntsPyjamas);

public static Fanciness comparePyjamas(Pyjamas compared1,Pyjamas compared2){
     .....
}

让所有想知道我的睡衣非常花哨的人

但是在另一个例子中,它们可能是相同的,因为它们在两种情况下都意味着相同的事情:

setThrustDirection(thrustDirection);

public void setThrustDirection(Vector3d thrustDirection){
     .....
}

警告

通常一个好主意是避免变量名称与字段名称(也就是实例变量名称)相同,除非在构造函数中,因为您最终可以shadowing字段(意味着您必须访问该字段)作为this.name,变量为name

答案 1 :(得分:3)

取决于具体情况。如果有一个函数来反转字符串

 def reverseString(theString)

theString对于该函数是好的,但在调用该函数的上下文中不太可能是一个好的变量名。如果这是一个人的名字,那就像被称为

的时候
 reverseString(firstName)

答案 2 :(得分:2)

我认为这可能是一个阴影问题。如果类具有与方法定义中的参数同名的实例变量,则编码器在引用类级变量时需要小心并使用 this。。我已经看到很多学生忘记了这一点,并想知道为什么代码不起作用。我更喜欢独特的名字来防止这个问题。

答案 3 :(得分:0)

命名的全部意义在于使代码更容易理解,如果你的名字那么它们是可以接受的,如果它们没有,也许你被教导错了......