我什么时候应该在编程中应用 demorgans 法则?

When should I apply demorgans law in programming?

我认为任何入门编程的程序员 class 都必须记住 DeMorgan 定律。

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

!(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'; }

Demorgan 定律允许您将 OR 替换为 AND。需要评估 AND 的两边以确保其为真:

if( !( save_record() && save_another_record() ) ) { echo 'Something bad happened'; }