【问题标题】:Why are multiple assignments in one line considered bad style? [closed]为什么一行中的多个作业被认为是不好的风格? [关闭]
【发布时间】:2012-12-15 21:14:39
【问题描述】:

在 C++ 中,您可以通过这样做进行多重赋值

x = y = z = 10;

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

有人可以向我解释一下为什么这被认为是不好的风格吗?

【问题讨论】:

  • 大家是谁?我想不出这有什么问题,当然除了可读性。
  • 你能详细说明一下“每个人”是谁吗?因为这是当今世界上只有大约 10 亿行源代码中常见的多重赋值技术。
  • 对于那些说它不可读的人:我认为如果你真的想为三个变量分配相同的值,那么这比替代方案更具可读性......
  • 它可能被认为是糟糕的风格,因为它比三个简单的作业阅读更费力(在凌晨 2 点,当你调试到最后期限时)。另一方面,一条线小于三线,因此可以双向争论。
  • 你应该问下一个告诉你这种风格不好的人,“为什么?”

标签: c++ operators


【解决方案1】:

试试这些定义:

int x;
bool y;
int z;
x = y = z = 10;

并对 x 的值感到惊讶。

【讨论】:

  • 如果您知道 boolean/int 转换是如何工作的,老实说一点也不奇怪。如果你使用相同的类型呢?
【解决方案2】:

这并不是天生的坏风格,但是您通常可以通过每行仅执行一个赋值并让编译器优化器整理出来来使代码更清晰。如果您使用多重赋值样式,那么有时可能不清楚x = y = z = 10; 是故意的还是x = y = z + 10; 之类的拼写错误。通过始终将自己限制为每个语句一个作业,您可以在出现拼写错误时变得明显。

【讨论】:

  • 有趣的是,这也是一个很好的评论用例示例。一个简单的// Set x, y, and z to specified value. 将立即清除两个潜在的混淆来源(是否存在拼写错误,以及所有三个是否设计相同或巧合),而依赖自我注释代码会使其混淆。 ...这反过来又可以证明您的观点。 ;P
【解决方案3】:

只要你知道它们应该是相同的值就没有问题。

例如

变化

x = y = z = 10;

x = y = z = 15;

很简单。

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

x = 10;
y = 10;
z = 10;

x = 10;
y = 15;
z = 10;

总比断线好。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2010-09-26
    • 2014-08-12
    • 2010-09-16
    • 2020-01-03
    相关资源
    最近更新 更多