条件表达式中的赋值——这对代码质量的潜在影响是什么?

Assignment in conditional expressions - what are the potential code quality consequences of this?

在对其中一个项目进行代码检查时,我发现 Resharper 正在对类似于以下的代码块发出 "Assignment in conditional expression" 警告:

if (this.pnlSummary.Visible = isValid)
{
    //do something
}
else
{
    // do something
}

虽然我同意这在某种程度上损害了可读性..但除此之外,我认为就代码执行而言使用它没有任何缺点。

谁能建议在条件表达式中编写赋值的潜在后果是什么?

基于此,我将指导开发人员避免编写此类代码。

如有任何建议,我们将不胜感激。

一个好的程序员是写出同事能理解的代码,而不是写出计算机能理解的代码的程序员。

While I agree that this compromises readability to some extent.

给你。这绝对是防止程序员编写这样的代码的一个很好的理由。 另外,当您只需敲击几次键盘就可以编写出更好的代码时,那么做一些有害的事情背后的原因是什么?

this.pnlSummary.Visible = isValid;
if (this.pnlSummary.Visible)
{
    //do something
}
else
{ 
   // do something
}

看到了吗?只是一些键和几个点。自动完成太棒了!

我认为它会损害可读性,但不是 "I wonder what that code does?",而是 "It's most likely assignment-instead-of-comparison bug, I will spend some time to check it"。像 R# 这样的静态代码分析工具也总是会给出误报。