可能重复:
为什么在方法结束时返回是一个好习惯
我想知道是否可以认为良好做法在方法中使用多个RETURN语句以及为什么.如果没有,我想知道如何以不同的方式重写代码.
public string GetNominativeById(int? candidateId)
{
if (candidateId.HasValue)
return repepositoryCandidate.GetById(candidateId.Value).Nominative;
else
return string.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
一个回归
public string GetNominativeById(int? candidateId)
{
string result;
if (candidateId.HasValue)
result = repepositoryCandidate.GetById(candidateId.Value).Nominative;
else
result = string.Empty;
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
cuo*_*gle 25
你实际上并不需要 else
string GetNominativeById(int? candidateId)
{
if (!candidateId.HasValue)
return string.Empty;
return repepositoryCandidate.GetById(candidateId.Value).Nominative;
}
Run Code Online (Sandbox Code Playgroud)
考虑这种反箭头模式:
if (condition1)
{
if (condition2)
{
if (condition3)
{
// code lines
}
}
}
Run Code Online (Sandbox Code Playgroud)
立即返回的方式将使您的代码更具可读性:
if (!condition1) return;
if (!condition2) return;
if (!condition3) return;
// code lines
Run Code Online (Sandbox Code Playgroud)
Guf*_*ffa 14
不,在方法中有多个退出点被认为是不好的做法.如果只有一个退出点,则更容易遵循代码.
但是,当该方法与示例中一样小时,无论如何都不难遵循代码,因此具有多个退出点并不是真正的问题.如果它使代码更简单,你可以很好地使用多个return语句.
Jak*_*cki 10
尽管为了可读性目的,您应该努力只有一个return语句,但是有几个模式涉及多个return语句.一个例子是Guard Clause.
保护条款的例子:
public Foo merge (Foo a, Foo b) {
if (a == null) return b;
if (b == null) return a;
// complicated merge code goes here.
}
Run Code Online (Sandbox Code Playgroud)
一些样式指南会让我们用一个返回来写这个,如下所示
public Foo merge (Foo a, Foo b) {
Foo result;
if (a != null) {
if (b != null) {
// complicated merge code goes here.
} else {
result = a;
}
} else {
result = b;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
另一种情况是当您可能希望从每种情况返回时的switch语句:
switch(foo)
{
case "A":
return "Foo";
case "B":
return "Bar";
default:
throw new NotSupportedException();
}
Run Code Online (Sandbox Code Playgroud)
我会将您的代码重写为:
public string GetNominativeById(int? candidateId)
{
return candidateId.HasValue
? repepositoryCandidate.GetById(candidateId.Value).Nominative;
: string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
在一天结束时,请记住您(和其他开发人员)将多次阅读您的代码,因此请确保它的可读性和显而易见性.
| 归档时间: |
|
| 查看次数: |
15004 次 |
| 最近记录: |