我认为任何参加编程课程的程序员都必须记住DeMorgan的法律。
如果你不知道它是什么,这就是要点
!(A&& B)=!A || !乙
!(A || B)=!A&& !B
我假设如果我必须记住它,我会发现它适用于编程情况。但我根本不必使用它。
我有什么理由在编程中使用它吗?它是否使程序更快,或者是否使条件更容易阅读?
答案 0 :(得分:1)
保持代码可读是一个很重要的原因,我确定在您认同代码之后,无论是谁,您都会认为代码是重要代码。如果您只反转(!)一个值而不是两个值,那么您将保存一两个CPU周期。
另一个原因是绕过短路。当许多语言看到!A || !B
时,他们就会停止评估是否!A是真的,因为如果B是真的则无关紧要。 !A足以让OR成为现实。
如果A和B是函数而不是变量,并且您希望两者都执行,那么您将遇到问题:
if( !save_record() || !save_another_record() ) {
echo 'Something bad happened';
}
Demorgan的法律允许您用AND替换OR。需要评估AND的两面以确保它是真的:
if( !( save_record() && save_another_record() ) ) {
echo 'Something bad happened';
}