首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否值得使用值元组作为返回值来包含成功标志?[等候接听]

是否值得使用值元组作为返回值来包含成功标志?[等候接听]
EN

Stack Overflow用户
提问于 2019-05-15 23:25:00
回答 2查看 0关注 0票数 0

我正在寻找返回null值的替代方法。前面的#7常见模式是

public bool TryParseInt(string data, out int result);

但是现在我们也可以使用值元组和解构器来做这样的事情

public (bool parsed, int result) TryParseInt(string data){}

var (parsed, result) = TryParseInt("0");
if(parsed == false)
      return;

是否值得编写这样的函数?我强烈不喜欢所有'out'的东西,因为在寻找bug时很容易错过。

作为使用值元组而不是在错误时返回空值的加号:你可以处理函数内部的错误。

作为减号,每次都会创建新的附加变量,并且当您一直使用此模式时代码看起来很邋..

EN

回答 2

Stack Overflow用户

发布于 2019-05-16 07:39:06

问问自己'我会做这样的事吗?':

public Tuple<bool, int> TryParseInt(string data)
{
   ...
}

如果答案是“是”,那么继续使用ValueTuples

public (bool parsed, int result) TryParseInt

据我所知,标准编码惯例说的是:

如果方法的名称以单词“Try”开头,则应返回nullable类型或bool + out参数。

以下是我们提供的两个选项:

public int? TryParseInt(string data) // or
public bool TryParseInt(string data, out int number)

我将使用第一个选项并null在解析操作失败时返回。

票数 0
EN

Stack Overflow用户

发布于 2019-05-16 09:00:35

我认为这是基于意见的。如上所述,选择你喜欢的更多:)

但对于您提供的用例,我建议使用out参数和第一个模式,这样您就可以编写干净的代码,例如:

if(TryParseInt("123", out int parsed))
{
  //use parsed variable
}

要么

var i = TryParseInt("123", out int parsed) ? parsed : -1; // -1 is just example

使用元组,此代码将变得不那么可读恕我直言。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档