0

我认为任何学习过编程课程的程序员都必须记住德摩根定律。

如果你不知道它是什么,这里是要点

!(A && B) = !A || !B
!(A || B) = !A && !B

我假设如果我必须记住它,我会发现它适用于编程情况。但我根本不需要使用它。

有什么理由我应该在编程中使用它吗?它是使程序更快,还是使条件更易于阅读?

4

1 回答 1

2

保持代码的可读性是一个重要原因,我敢肯定,在您同意代码很重要之后,谁在您的代码上工作。如果您只反转(!)一个值而不是两个值,您将节省一两个 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'; }

于 2016-04-19T19:18:01.093 回答