何らかの理由でこれが正しく表示されません。これを書き込むより良い方法はありますか? '!月曜日の場合..'負の返信文の場合
私は私が持っていると思うif (!(auth.DoesAuthMatch && auth.DoesEmailMatch))
{
statusText = "Access Denied";
}
何らかの理由でこれが正しく表示されません。これを書き込むより良い方法はありますか? '!月曜日の場合..'負の返信文の場合
私は私が持っていると思うif (!(auth.DoesAuthMatch && auth.DoesEmailMatch))
{
statusText = "Access Denied";
}
リファクタリングにそれを変更することができます:
しかしとして、もう少し読みやすいかもしれ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の簡単なアプリケーション。
メソッドにリファクタリングする必要があるのはなぜですか? – siride
@サイード:コードが何をしているかを見るには、呼び出されたメソッドを追跡する必要があります。ロジックは明らかですが、私の考えでは、コードを理解しようとするのは難しいです。 –
私は@Odedを選択しました。これは、他のソリューションとリソースへのリンクの例を示しています。すべての反応はほぼ同じで、わずかな違いがありました。私は使用しました '(!(auth.DoesAuthMatch && auth.DoesEmailMatch))' 月曜日の早い者の応答に感謝します。 –
それは結構です - 同等では次のようになります。
if (!auth.DoesAuthMatch || !auth.DoesEmailMatch)
{
statusText = "Access Denied";
}
さてあなたは、メソッドへ...
if (!auth.DoesAuthMatch || !auth.DoesEmailMatch) statusText = "Access Denied";
それを反転するだけで何が問題になりますか?私はコードを読むときに正の論理が理解するのが早いことがわかります。
例:
if (auth.DoesAuthMatch && auth.DoesEmailMatch)
{
statusText = "Access Granted";
}
else
{
statusText = "Access Denied";
}
ドモルガンの法則:http://en.wikipedia.org/wiki/De_Morgan's_laws – siride
常に見てhttp://en.wikipedia.org/wiki/De_Morgan%27s_laws – rerun