为什么一行中的多个作业被认为是不好的风格?

Cae*_*sar 15 c++ operators

在C++中,您可以通过执行此操作来执行多个赋值

x = y = z = 10;
Run Code Online (Sandbox Code Playgroud)

然而,有很多人告诉我这是一种糟糕的风格,我不应该在没有给出理由的情况下使用它.

有人可以向我解释为什么这被认为是一种糟糕的风格?

Sjo*_*erd 24

尝试使用这些定义:

int x;
bool y;
int z;
x = y = z = 10;
Run Code Online (Sandbox Code Playgroud)

并对x的价值感到惊讶.

  • 老实说,如果您知道布尔/整数转换的工作原理,就一点也不奇怪了。如果您使用相同的类型怎么办? (3认同)

Mar*_*k B 18

它本身并不是坏的风格,但你通常可以通过每行只进行一次赋值并让编译器优化器对其进行排序来使代码更清晰.如果你使用多重赋值风格,那么有时可能不清楚是否x = y = z = 10;有意或是否是类似的错字x = y = z + 10;.通过始终将自己限制为每个语句的一个赋值,在拼写错误发生时就会明显.


Jos*_*ton 7

只要您知道它们应该都是相同的值,就没有问题.

例如

改变

x = y = z = 10;
Run Code Online (Sandbox Code Playgroud)

至

x = y = z = 15;
Run Code Online (Sandbox Code Playgroud)

很容易

但是,如果它们是任意相同的,则单独的分配可以传达这一点,并且更容易单独更改以进行测试.

x = 10;
y = 10;
z = 10;
Run Code Online (Sandbox Code Playgroud)

至

x = 10;
y = 15;
z = 10;
Run Code Online (Sandbox Code Playgroud)

比打破这条线更好.

关键是你告诉下一个程序员查看代码(或者你自己在6个月内).