我对如何最好地将我的代码重构为更易读的东西有点困惑。
考虑这段代码:
var foo = getfoo();
if(foo!=null)
{
var bar = getbar(foo);
if(bar!=null)
{
var moo = getmoo(bar);
if(moo!=null)
{
var cow = getcow(moo);
...
}
}
}
return;
如您所见,if
需要大量嵌套块,因为每个嵌套的 if 都依赖于先前的值。
现在我想知道如何让我的代码在这方面更简洁。
我认为自己的一些选择是:
- 在每个 if 子句之后返回,这意味着我将在多个地方留下我的方法
- throw
ArgumentNullException
s,之后我会在最后捕获它们并将 return 语句放在我的 finally 子句中(或在 try/catch 块之外) - 使用标签和
goto:
这些选项中的大多数对我来说似乎有点“脏”,所以我想知道是否有一种好方法可以清理我创建的这个烂摊子。