是否应该经常跳过捷径,简洁和聪明,以支持清晰度?

Sil*_*ids 6 c c++ coding-style

看到这段简单的代码后,脑海中浮现出这个问题:

if (!x%y)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

也许这是早期C书(K&R?)的影响,但如果不是那么可爱的话,不是以下总是首选的吗?

if (x%y != 0)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

BЈо*_*вић 7

这句话回答了你的问题.

"调试的难度是首先编写代码的两倍.因此,如果你尽可能巧妙地编写代码,那么根据定义,你不够聪明,无法调试它." - Brian W. Kernighan

  • +1用于回答K&R报价,因为在我看来这是K&R C书的直接结果. (3认同)

fre*_*low 5

你确定那个代码吗?!x%y意味着(!x)%y因为!紧紧束缚而不是%.

(仅凭这个原因,我更愿意x % y != 0.)


R..*_*R.. 5

首先,每个人注意到的道具(!x%y)并不等同于(!(x%y)),但更重要的是,它们都不等同于:

if (x % y != 0)
Run Code Online (Sandbox Code Playgroud)

它有一个更好的形式:

if (x % y)
Run Code Online (Sandbox Code Playgroud)

我个人尝试不写,==0当它可以被替换使用!而不引入过多的括号,我绝对不会使用!=0,但这是一个将开始火焰战争的讨论.:-)

  • 这个.零是假的,其他所有真正的语义都被深深地嵌入到c派生语言中,而**非常清晰,但松散的`!`需要解析. (3认同)