条件表达式中的赋值——这对代码质量的潜在影响是什么?
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# 这样的静态代码分析工具也总是会给出误报。
在对其中一个项目进行代码检查时,我发现 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# 这样的静态代码分析工具也总是会给出误报。