1
35
如果您对调用函数时发生的情况感到惊讶,则该函数的文档记录很差。 给定一个函数的名称、它的参数列表,也许还有一些非常简短和描述性的文档,应该非常清楚该函数的作用和它可观察到的副作用(包括是否修改了任何参数)。
如果函数是const correct,那么这不是问题。如果函数不是const correct,那么应该将其设置为const correct,如果可以的话(追溯地设置code const correct可能是一个绝对的打击)。
这并不完全正确。函数可以获取指向const对象的指针,在这种情况下,不能更改该对象。
所有这些都很好,但是为什么应该使用按引用传递而不是按指针传递呢?最明显的原因是 引用不能为空 .
|
2
18
在我看来
根据上述约定,向调用者表明他们应该期望
|
3
11
虽然我自己不会使用提示的建议,但理由是正确的,这就是为什么像C语言这样的语言引入了
我能提出的最好的反对理由是:你不应该要求人们使用指针,而应该
. 当我打电话
|
4
10
如果你还没有,请购买一本Habor萨特和Andrei Alexandrescu的“C++编码标准:101条规则、指南和最佳实践”。把它推荐给你的同事。这是一个很好的地方编码风格的基础。 在第25条中,提交人建议: “参数是必需的”表示NULL不是有效值。 缺陷最常见的原因之一是意外地取消引用空指针。在这些情况下使用引用而不是指针可以在编译时消除这些问题。 因此,您有一个折衷方案——消除经常出现的错误源,或者确保通过函数名以外的方法调用代码的可理解性。我个人倾向于消除风险。 |
5
7
编码标准的重要部分不是它们是最优的,而是每个人都遵守它们,这样代码体就有了一些一致性。 |
6
7
如果他们真的希望在调用站点明确地提到out参数,那么他们应该实际地要求这样做,而不是试图使指针具有他们不具有的含义,从而绕过它。指针并不意味着修改,而与引用一样,为未修改的对象传递指针并不少见。 显式表示参数的一种可能方法是:
我继续写了这个和输入输出参数所需的各种类,以一种可以很好地降级的方式。我怀疑我会用 that convention |
7
2
我发现有两种说法:
我同意您(a)的动机:在阅读代码时,您不可能知道所有的声明,即使mouseover给了您函数的声明。在数千行中移动数百个函数只需要时间。 如果你把输入和输出参数混合在一起,我肯定会看到一个问题:
调用此函数将如下所示:
在这个例子中,调用本身是相当明显的,可以潜在地修改
那么方法应该是
豪晔 我仍然倾向于(b):这仅仅是因为编写新代码时可以避免这个问题,而“可能为空或不为空”通常是更常见的问题。 |
8
1
理由在逻辑上是正确的。
但在逻辑上,它确实提供了这方面的任何意义。
|
9
1
我建议:
|
10
1
我不同意这条准则。通过确保代码常量正确,可以很容易地解决理由中提到的混淆。如果通过引用将输入参数传递给函数,则它应该是
此外,当您将指针传递给函数而不是引用时,这会立即引发一个问题,即这是否是指向动态分配内存的指针,以及是否应该释放内存。使用引用消除了调用
|
Kris · 有没有办法获得可变结构字段的“引用” 2 年前 |
Jora Karyan · IF语句未按预期引发错误 2 年前 |
nedzad · 如何访问引用Firebase中其他对象的对象 6 年前 |
Empha · 从成员函数对对象所做的更改不会持续。范围/参考问题? 6 年前 |