栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

避免检查错误是否为零重复?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

避免检查错误是否为零重复?

这是一个常见的投诉,有几个答案。

以下是一些常见的问题:

1-还不错

这是对这些抱怨的非常普遍的反应。实际上,您的代码中有几行额外的代码实际上并不是那么糟糕。这只是廉价的打字,在阅读方面非常容易处理。

2-这实际上是一件好事

这是基于这样的事实,即键入和读取这些额外的行可以很好地提醒您,实际上您的逻辑可能会在此时逃逸,并且您必须撤消放置在其前几行中的所有资源管理。通常将其与异常进行比较,这会以隐式方式破坏逻辑流,迫使开发人员始终牢记隐藏的错误路径。前一段时间,我在这里写了一篇更深入的评论。

3-使用紧急/恢复

在某些特定情况下,您可以通过使用

panic
已知类型来避免某些工作,然后
recover
在您的程序包代码问世之前立即使用,将其转换为适当的错误,然后返回该错误。这种技术最常用于展开递归逻辑,例如(un)元帅。

我个人尽量不要滥用过多,因为我与第1点和第2点的关联度更高。

4-稍微重新组织代码

在某些情况下,您可以稍微重新组织逻辑以避免重复。

举一个简单的例子:

err := doA()if err != nil {    return err}err := doB()if err != nil {    return err}return nil

也可以组织为:

err := doA()if err != nil {    return err}return doB()

5-使用命名结果

某些人使用命名结果从return语句中删除err变量。但是,我建议您不要这样做,因为这样做节省的时间很少,降低了代码的清晰度,并且当在纾困返回语句之前定义一个或多个结果时,逻辑上容易产生细微问题。

6-在if条件之前使用语句

正如汤姆·王尔德(Tom
Wilde)在下面的评论中很好地提醒的那样,

if
Go中的语句在条件之前接受一个简单的语句。因此,您可以执行以下操作:

if err := doA(); err != nil {    return err}

这是一个很好的Go习惯用法,经常使用。

在某些特定情况下,我宁愿避免以这种方式嵌入该语句,只是为了清晰起见而使其独立存在,但这是一个微妙的个人事情。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484233.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号