为什么一行中的多个赋值被认为是糟糕的风格?
Why are multiple assignments in one line considered bad style?
在c++中你可以通过这样做来进行多重赋值
x = y = z = 10;
然而很多人告诉我这是一个糟糕的风格,我不应该在没有给我理由的情况下使用它。
谁能给我解释一下为什么这被认为是一个坏的风格?
尝试使用这些定义:
int x;
bool y;
int z;
x = y = z = 10;
并且对x的值感到惊讶
这本身并不是一种糟糕的风格,但是您通常可以通过每行只执行一个赋值并让编译器优化器对其进行排序来使代码更清晰。如果你使用多重赋值样式,那么有时可能不清楚x = y = z = 10;
是故意的还是x = y = z + 10;
的错别字。通过限制每条语句只赋值一次,您可以在出现错别字时很明显地发现。
只要你知道它们应该是相同的值就没有问题。
。
改变x = y = z = 10;
x = y = z = 15;
非常简单。
然而,如果它们是任意相同的,单独的赋值传达了这一点,并且更容易在测试中单独更改。
x = 10;
y = 10;
z = 10;
x = 10;
y = 15;
z = 10;
比断行要好。
关键是你告诉下一个程序员(或6个月后的你自己)看代码。
相关文章:
- 由于没有使用赋值运算符,映射的值是如何初始化的?
- C++:将值赋值给原始数据类型(例如布尔值)是原子操作吗?
- 在未初始化的变量上使用复合赋值运算符(+=, ..)不是C++中的UB?
- 链表指针赋值为什么我们不能直接将尾巴分配给 temp 而不是尾巴>尾巴下一个
- 复合赋值的左侧表达式是未初始化的值.计算出的值也将是垃圾
- 为什么在C++中,内建赋值返回的是非常量引用而不是常量引用
- 为什么在直接初始化和赋值中传递 lambda 而不是在复制初始化中传递 lambda 时会编译?
- 原子变量的多重赋值是原子操作吗?
- 为什么类的赋值运算符的返回类型通常是非常量(而不是常量)引用?
- 查找所有移动构造函数和移动赋值运算符(特别是那些没有"noexcept"的运算符)
- 为什么在取消引用的指向接口的指针上使用赋值运算符不是编译器错误
- Gcc 使用 memcpy 作为隐式复制赋值运算符,而不是成员复制
- 我很难为 if/else 语句编写此赋值的代码.这是第一堂编程课
- 在某些情况下,编写自己的复制构造函数而不是自己的赋值运算符是个好主意吗
- luabind::对象的赋值运算符是如何重载的?
- 为什么这个c++赋值语句是非法的
- 赋值运算符"="是原子的吗?
- 多重赋值(a = b) = c语法是如何工作的?
- Shared_ptr赋值-也是自定义删除器复制的
- 为什么一行中的多个赋值被认为是糟糕的风格?