关于回归虚空的文体问题

Dav*_*ble 5 c++ coding-style idioms

考虑以下人为的例子:

void HandleThat() { ... }

void HandleThis()
{
    if (That) return HandleThat();
    ...
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作得很好,我很确定它是规范有效的,但我(也许是我自己)考虑这种不寻常的风格,因为调用似乎返回函数的结果,尽管这两个函数都是原型的无效.

通常,我希望看到:

if (That) {HandleThat(); return;}
Run Code Online (Sandbox Code Playgroud)

我觉得,对于发生的事情没有任何含糊之处.

SO社区,我可以看看返回 - 无效编码风格是否令人困惑或有问题?它有成语的感觉; 我应该使用它还是避免使用它?

一般来说,我会努力澄清并使用第二种风格.另一方面,第一种形式的整洁性让我对它有所了解.

Kev*_*ity 13

我同意你的观点,第一种风格令人困惑,因为有些含义会被归还.事实上,由于这个原因,我必须阅读几次.

从函数prototyped void返回时,它应该只是返回;


Har*_*d L 11

这可能只是有点太聪明了.如果该行最终离函数顶部超过几行,则会令人困惑.这也意味着程序员在查看代码时需要关联

return HandleThat();
Run Code Online (Sandbox Code Playgroud)

使用void返回类型并在他们真正理解代码之前弄清楚聪明.当您在if/else分支中执行多个操作时,您应该使用大括号并将步骤放在不同的行上.占用更多空间但更容易理解:

if (That) {
    HandleThat();
    return;
}
Run Code Online (Sandbox Code Playgroud)