我认为任何学习过编程课程的程序员都必须记住德摩根定律。
如果你不知道它是什么,这里是要点
!(A && B) = !A || !B
!(A || B) = !A && !B
我假设如果我必须记住它,我会发现它适用于编程情况。但我根本不需要使用它。
有什么理由我应该在编程中使用它吗?它是使程序更快,还是使条件更易于阅读?
我认为任何学习过编程课程的程序员都必须记住德摩根定律。
如果你不知道它是什么,这里是要点
!(A && B) = !A || !B
!(A || B) = !A && !B
我假设如果我必须记住它,我会发现它适用于编程情况。但我根本不需要使用它。
有什么理由我应该在编程中使用它吗?它是使程序更快,还是使条件更易于阅读?
保持代码的可读性是一个重要原因,我敢肯定,在您同意代码很重要之后,谁在您的代码上工作。如果您只反转(!)一个值而不是两个值,您将节省一两个 CPU 周期。
另一个原因是绕过短路。当许多语言看到!A || !B
它们停止评估 !A 是否为真时,因为 !B 是否为真并不重要。!A 足以使 OR 为真。
如果 A 和 B 是函数而不是变量,并且您希望两者都执行,那么您将遇到问题:
if( !save_record() || !save_another_record() ) {
echo 'Something bad happened';
}
德摩根定律允许您将 OR 替换为 AND。需要评估 AND 的双方以确保其为真:
if( !( save_record() && save_another_record() ) ) {
echo 'Something bad happened';
}