![]() |
1
13
既然你把问题标记为C++而不是C,我建议你:
但这只是一些一般性的暗示。最好的方法总是取决于具体的问题… |
![]() |
2
3
取决于您想如何处理“错误”。 例如,以标准函数atoi为例。它将字符串转换为整数,但是如果字符串不包含数字,它应该返回什么?在这种情况下,C/C++运行时将设置ErnO全局变量。另一种选择是抛出异常。 就我个人而言,我不太喜欢这两种选择。 因此,如果我通常使用以下规则:
|
![]() |
3
2
我倾向于这样做。 示例中的另一种方法是将两个对象编码为一个返回值(例如使用null作为特殊值)或返回一个结构。 编码两件事有时是不可能的,而且有点容易出错。返回一个结构是很多额外的工作和混乱。所以我倾向于做你做的事。我倾向于假设参数列表中的“原始”指针和引用用于返回中的值,如果它们仅用于传入数据,则它们将是“const”。 但老实说,我一想起这条规则就忘得一干二净,所以也许这条规则不太好。 boost库中有一个“可选”类,可以满足您的需要,但我自己从来没有真正喜欢过它,也许没有什么很好的理由。 |
![]() |
4
2
我想这要看情况而定。复制构造的类型有多贵?你能写下你的函数吗
RVO
-友好?至少在我们有C++ 0x之前
rvalue references
,我的建议是不要返回“昂贵”类型(例如
而不是:
取决于你如何编写你的函数,rvo可能会启动,但根据我的经验,这不是你通常可以依赖的东西。 |
![]() |
5
2
关于你在一本关于api设计的书中提出的问题。寻找Martin Reddy的“API设计”,它于2011出版。 作为对接受答案的评论。在这本书中,作者实际上建议输入参数更倾向于常量引用,输出参数更倾向于指针,因为它更明确地指示了客户机可以修改参数,例如foo(bar)对foo(bar)。 你也可以看谈话 How To Design A Good API and Why it Matters . 它主要使用Java,但我记得。 |
![]() |
6
1
我认为如果有不好的地方就返回null,如果好的话就返回somestruct
在这种情况下,除了检查布尔值,您应该检查它是否为空,如果不使用它。 但有时必须按参数返回值。它取决于返回值的数量,并且可以使用上下文函数。 |
![]() |
7
1
您可以执行以下操作:
或
很难说一个设计/api是好是坏,没有什么是黑是白…(灰色)??????) 您必须选择将 更容易编码 用。和 连贯 ,如果选择第一种方法类型,请在项目的其余部分执行此操作。 别忘了 记录代码 ,因此更容易理解如何使用api。 |
![]() |
8
1
我建议直接返回结果类型,如下所示:
并在函数无法处理的情况下抛出异常(tux21b已经这样提到过)。或者,您可以返回两种类型
第三,我喜欢将输出参数声明为指针,而不是引用(如您所提到的),因为在调用代码中,我看到了输入和输出参数的区别。给定函数:
然后在调用代码中,可以看到(不看函数声明)什么是输入,什么是输出参数(如果我连续地应用这个概念的话)。
|
![]() |
9
0
你应该调查一下
|
![]() |
Jace Johnson · 我应该使用多个地图功能还是只使用一个 1 年前 |
|
Pop Bob · Api返回UnsupportedMediaType 1 年前 |
![]() |
Mr FoX · 如何从mysqli输出json数组,而[重复] 1 年前 |