language-agnostic - 为什么以析取范式表达代码很重要?

标签 language-agnostic logic software-quality boolean-expression

在我工作的公司,最近要求所有“高度可见”的 bool 逻辑必须以析取范式表示。

例如(尽管这个概念与语言无关),

#if (defined(A) || defined( B )) || (defined(C) && defined(D))

必须替换为:
#if defined(A) || (defined(C) && defined(D)) || defined(B)

强制要求必须以这种方式表达代码的动机是什么?有哪些优势?

最佳答案

优点是在代码库中的任何地方都以规范/规范化的形式表达这种逻辑(理论上)将使程序员更容易理解和维护它。

如果没有这样的规则,一些程序员很容易尝试“优化”一个表达式,以至于维护人员很难解开它。此外,如果有必要,通用形式可以更容易地组合新的表达式。

(这些优势值得商榷。与任何风格指南一样,遵循一致的规则比选择一个规则而不是替代规则更重要。)

关于language-agnostic - 为什么以析取范式表达代码很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574929/

相关文章:

scala - promise 的反义词是什么?

algorithm - 对部分排序列表进行排序的最佳方法是什么?

language-agnostic - 一台 pretty-print "to rule them all"

Java 对 Tic Tac Toe 程序没有意义

matlab - 如何计算实际评论的行数?

unit-testing - 进行正式单元测试的最有说服力的方法是什么?

language-agnostic - tcp底层传输机制/网络编程

algorithm - 介于 0 和数字序言之间的变量的多个值

windows - 文件夹锁定的工作原理

testing - Bug Hunt 的替代品?