为什么停止编写否定代码

先前的研究表明,在句子中间包含否定性词(例如“ not”)可能会引起我们的注意,并使其更难以理解。

对或错? 我们的大脑如何处理否定性陈述

我们每天都面临着正面和负面的陈述。 通过将新的传入信息与…结合起来

www.psychologicalscience.org

作为软件程序员,我注意到在代码中省略负运算符可以转化为更高效的代码库。 在代码审查中,我鼓励团队以积极的方式进行编写,以便于理解和使用。 这可能与编写的自然趋势背道而驰,但是随着代码库的增长,它尤其有意义。 编写肯定的代码有很多好处。 在本文中,我解释了为什么我们应该尽量避免使用负面代码。

否定词需要更多的思考过程。 我们可以将思想视为具有方向的箭头。 否定会颠覆思想的逻辑。

请勿投喂动物

阅读“请勿喂食动物”时,思维方向发生了变化。

动物园或公园中的一个著名标志可以是“不要 喂动物”。许多标志必须强调“不”一词,以帮助人们记住声明的这一部分。 您是否注意到他们很少使用复合动词+否定词“不要”,例如 喂动物” ? 通过分离负面部分,就更容易强调。 无论如何,思想必须扭转思想。

一种更容易理解的方式可能是

避免喂动物

由https://www.maxpixel.net/Shield-Attention-Road-Sign-Traffic-Sign-Stop-634941提供

停止传达一个简单明了的想法。 停止。 如果将这个标志改写为“不要去”怎么办? 它消除了负面因素。

“停止”

“不要

理清语句中的逻辑,以便于阅读。 尽可能避免否定,因为这会颠倒逻辑。 人的思想必须做更多的工作才能理解逻辑上的翻转。

一个积极的想法是:

  • 更容易阅读
  • 易于同行评审
  • 推动作者改善读者的体验

例如,比较以下两个语句:

“如果我得到钱,我将付给您”。 (好)

“如果我不得到钱,我就不会付给您”(所以……您是否付给我??)

第一个陈述更容易理解。 简单会消耗更少的思维能力。 这样做的好处是可以加快沟通速度,减少误解。

编程语言像数学一样具有逻辑运算符。 许多最流行的编程语言使用==表示相等,使用!=表示否定。 在数学上将是=≠。

在下面的代码示例中,我们要编写一个算法。 该程序将调查杂货店。 指示是购买有现货的香蕉。 否则,请在其他商店中查看。

 如果(bananasQuantityAvailable == 0){ 
goToAnotherStore()
}其他{
购买(香蕉)
}

 如果(bananasQuantityAvailable!= 0){ 
购买(香蕉)
}其他{
goToAnotherStore()
}

一个三元表达式的例子

  var itemState = itemsCount == 0吗?  “ Empty”:“可用” 

  var itemState = itemsCount!= 0吗?  “可用”:“空” 

您可能会认为在编写代码时放入负运算符会更快。 这很快成为一种习惯,突然您开始在各处编写负运算符。 这可能会变得非常混乱。

假设我们要编写一个可以识别特斯拉汽车的程序。

在此示例中,我将逻辑运算符&&用于AND
对于OR

 如果(isCar && isElectric && isFast && isAwesome){ 
isTesla = true
其他{
isTesla =假
}

转换为:

如果它是一辆又快又棒的电动汽车,那就是特斯拉。

 如果(!isCar 
!isElectric
!isFast
!太棒了) {
isTesla =假
其他{
isTesla = true
}

转换为:

如果不是电动汽车,它就不是特斯拉,而且速度也不快,而且功能也不强大。

Lera Bododitsky在她的TedTalk中表示语言决定了我们的思维方式。

她的例子之一是人们如何形容桥梁。 西班牙语和德语都将名词与性别相关。 在西班牙语中,一座桥将是阳刚的“ el puente”。 德语还为名词分配性别,从而使“ dieBrücke”具有女性味。 因此,讲西班牙语的人经常会提到带有男性刻板印象的形容词,例如“强”和“长”的桥,而德国人可能会用具有“美丽”和“优雅”等女性刻板印象的桥来形容。

否定词是大多数语言的一部分。 这些短语也使它们成为现实。“如果我们拥有它们,为什么使用它们呢?”。 我们习惯于在句子中添加否定词,因为我们习惯于将否定词包括在思想中。 显然,我们将在代码中使用负运算符。

在某些情况下,使用负运算符会更有意义。 这样的情况是,否定词仍然易于阅读,只需要处理否定情况,并且需要较少的代码来表达。

每次我整理一条逻辑语句时,我都会看到肯定代码的力量。 简化代码库是一个伟大的开发经验,所有团队都可以从中受益。 审查和维护更加容易。 另一方面,我们不要把这个原则当作教条。 否定是一种我们可以随时使用的工具。


感谢您的阅读,如果您对此原则有任何意见,请告诉我。