对方法调用和方法签名参数使用相同的变量名称是一种好习惯吗?

Xer*_*xes 2 c#

例如:

int a;
int b;

int value = getValue(a,b);


private int getValue(int a, int b)
 {

  int value = a+b;
  return value;

 }
Run Code Online (Sandbox Code Playgroud)

是上述实用还是被认为是不好的做法,并会在后期开发中引起问题.

Dav*_*vid 9

我意识到这是一个人为的例子来展示你的要求,但你的例子确实包含一个命名问题,我将指出:

int a; // <---- right here
int b; // <---- and here

int value = getValue(a,b); // <--- and a little here

private int getValue(int a, int b)
{
  int value = a+b;
  return value;
}
Run Code Online (Sandbox Code Playgroud)

问题是不是在变量名是否一致或不一致,他们是所谓的方法是什么.该问题是变量的名字不叫任何有意义的东西.这比你提出的要多得多.

让我们重新考虑你的方法,使这个例子稍微减少设计......

int a;
int b;

int value = GetSum(a,b);

private int GetSum(int firstValue, int secondValue)
{
  return firstValue + secondValue;
}
Run Code Online (Sandbox Code Playgroud)

该方法现在更清洁,更直观地反映了它的目的.现在,我们再次提出这样的问题......应ab重命名以匹配方法的人?

很可能不是.方法中的名称已更改为指示其上下文.该方法获得两个值的总和,第一个和第二个值.那么,什么是上下文ab?他们也只知道第一个和第二个吗?或者他们是否传达了一些其他不易获得的含义?就像是:

int milesToFirstDestination;
int milesToSecondDestination;
Run Code Online (Sandbox Code Playgroud)

要么:

int heightOfPersonInInches;
int heightOfStepstoolInInches;
Run Code Online (Sandbox Code Playgroud)

或者为了某种目的需要求和的两个值的任何其他示例.如果我们将这个上下文添加到变量名中,那么我们肯定不希望将它添加到方法中.该方法应尽可能通用,在该任务之外执行单个任务而无需担心.

简而言之,这既不好也不坏,因为它甚至不值得考虑.有时,仅凭巧合,名称是相同的.(例如,这通常可以通过私人帮助方法实现.)但它们与标准或实践的结果不同,而是由于巧合具有相同的含义.


Jon*_*eet 8

你是说一个好的做法总是命名一个变量用作方法的参数(在调用站点),方法与方法签名中方法的参数相同?(你的例子不清楚,不会编译,也不包含任何参数......)

不 - 你绝对不需要这样做.在很多情况下,你调用它没有关于您的上下文线索通用方法-但你应该在一个方式,你的调用方法命名变量在这方面的意义.