由于某种原因,这看起来不正确。有没有更好的方法来编写/折射它?
if (!(auth.DoesAuthMatch && auth.DoesEmailMatch))
{
statusText = "Access Denied";
}
我想我有一个'周一的案例!'
答案 0 :(得分:5)
重构方法:
private bool IsAccessDenied(Auth auth)
{
return !(auth.DoesAuthMatch && auth.DoesEmailMatch);
}
if (IsAccessDenied(auth))
{
statusText = "Access Denied";
}
至于布尔逻辑:
!(auth.DoesAuthMatch && auth.DoesEmailMatch) ==
(!auth.DoesAuthMatch || !auth.DoesEmailMatch)
De Morgan's Laws的简单应用。
答案 1 :(得分:2)
很好 - 相当于:
if (!auth.DoesAuthMatch || !auth.DoesEmailMatch)
{
statusText = "Access Denied";
}
答案 2 :(得分:2)
代码看起来正确。但可能更具可读性:
if (!auth.DoesAuthMatch || !auth.DoesEmailMatch)
或者甚至可能:
if (auth.DoesAuthMatch == false || auth.DoesEmailMatch == false)
答案 3 :(得分:1)
反转它有什么问题?我发现在阅读代码时可以更快地理解正面逻辑。
e.g:
if (auth.DoesAuthMatch && auth.DoesEmailMatch)
{
statusText = "Access Granted";
}
else
{
statusText = "Access Denied";
}
答案 4 :(得分:0)
你可以把它改成......
if (!auth.DoesAuthMatch || !auth.DoesEmailMatch) statusText = "Access Denied";