Google如何处理C ++中的错误

Google不会在他们的C ++代码库中使用异常。 对于错误,他们使用称为状态的类,而不是程序员从函数返回时必须检查的类。 否则,该程序不会编译(链接https://www.youtube.com/watch?v=NOCElcMcFik在41:34)。 我有几个问题:

1)网上有免费的课程吗?

2)对于“变成f()”的副作用的“void f()”没关系。 但是如果你的函数已经返回一个值呢? Google不允许传递非常量的引用,因此您无法改变给予您的状态对象。 那么他们怎么做?

谢谢你的帮助。


来自Google风格指南:

输入参数通常是值或常量引用,而输出和输入/输出参数将是非常量指针。

正如讲师所言,谷歌使用专有的内部编译器,当未检查Status时,该编译器被操纵以引发错误。


1)就像之前提到的那样,您需要定制工具来执行这些规则。 这些可以是代码分析规则,可以设置失败时引发错误。

2)有许多方法可以在C ++中返回多个值。 您可以返回一对,其中一个项目是您关心的值,另一个是状态对象。 C ++ 11还引入了更多返回值的元组。 你甚至可以编写你自己的对象,包含你可能需要的所有返回的信息,但这可能最终会在很多情况下变得过度。

最有可能的是,Google会让你传入一个指针而不是非const引用。 我相信他们更喜欢这种风格,因为它强制调用者传递一个对象的地址,所以它更明确地指出正在使用对该对象的“引用”,并且该对象可能会被修改。

// let's a code reviewer know
// that a's address is used and might be modified
f(&a)

// requires the code reviewer to know
// the function signature to determine
// if the a is passed by value,
// const reference, or non-const reference
f(a)
链接地址: http://www.djcxy.com/p/84765.html

上一篇: How Google deals with errors in C++

下一篇: 8 characters get lost when converting from list to data.frame in R