gpt4 book ai didi

c# - 如何防止箭头反模式

转载 作者:IT王子 更新时间:2023-10-29 03:49:08 25 4
gpt4 key购买 nike

我对如何最好地将我的代码重构为更具可读性的东西感到困惑。

考虑这段代码:

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 block ,因为每个嵌套的 if 都依赖于先前的值。

现在我想知道如何让我的代码在这方面更简洁一些。

我自己想到的一些选择是:

  • 在每个 if 子句之后返回,这意味着我会在多个地方离开我的方法
  • 抛出 ArgumentNullException,之后我会在最后捕获它们并将 return 语句放在我的 finally 子句中(或在 try/catch block 之外)
  • 使用标签和 goto:

这些选项中的大多数对我来说似乎有点“脏”,所以我想知道是否有一个好方法来清理我创建的这个烂摊子。

最佳答案

我会选择多个 return 语句。这使得代码易于阅读和理解。

出于明显的原因,不要使用 goto

不要使用异常,因为您所做的检查并非异常,这是您可以预料到的,因此您应该将其考虑在内。针对异常进行编程也是一种反模式。

关于c# - 如何防止箭头反模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17804005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com