gpt4 book ai didi

c# - book TryGet(out X x) 模式的替代方案

转载 作者:行者123 更新时间:2023-11-30 20:38:48 25 4
gpt4 key购买 nike

<分区>

我经常使用模式

bool TryGetX(out X x)

当我需要从可能失败的服务中获取数据时。当客户端和服务在尝试检索数据之前都不知道数据是否可用时,我会使用它。我从来没有对以这种方式使用 out 参数感到完全满意,而且我从其他 SO 问题中看到它被认为是一种糟糕的模式。

但是,我还没有看到一个令人信服的替代 API 来提示客户他们的方法调用实际上可能不会返回数据。

我考虑过的备选方案:

  • X GetX(),如果服务无法提供请求的数据,其中 GetX() 返回 null。我不喜欢这样做,因为很多人并不清楚他们是否需要检查返回的 null。考虑到我在处理过的遗留代码中遇到的空引用异常的数量,人们经常会忽略空检查,并且用户会看到一个丑陋的异常框。至少 TryGetX 方法让客户端清楚数据可能不会被返回。即使他们确实检查 null,到处都需要 if (x == null) 真的比 TryGetX(out X x) 好吗?

  • Try/Catch,其中 GetX() 在无法返回数据时抛出异常。同样,客户可能没有意识到 GetX() 会引发异常,即使他们意识到了,您在代码周围也散布了 Try/Catches。

  • GetXResult GetX(),其中 GetXResult 类有两个属性:bool SuccessX x。这可能是我的首选替代方案,但后来我有许多结果类,使我的项目变得困惑。

返回数据但可能无法返回所请求数据的方法的最佳方法是什么?

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