【问题标题】:IF function with && and || at the same time带有 && 和 || 的 IF 函数同时
【发布时间】:2019-08-23 01:42:05
【问题描述】:

我想在几个条件下做 IF AND && 和 OR ||就在上面

我有两个数字范围 顶部 1 - 底部 1 和 前 2 - 后 2

并且仅在 Currentnumber 在这两个范围内时执行 我还好吗?

if (OnlyAbove == True
    && (Top1 > Currentnumber || Top2 > Currentnumber)
    && (Bottom1 < Currentnumber || Bottom2 < Currentnumber)
   )
{
   Statement
}

【问题讨论】:

  • 你测试了吗?你真的应该为所有案例创建单元测试
  • 这个数字也应该在这两个范围内(也就是在交叉点内)还是在这些范围内(又名联合)?
  • 如果一个数字在 Bottom1 和 Top1 之间,那么它必须大于(或大于或等于,取决于您的规则)Bottom1 AND 它必须小于(或 OR 在另一个范围内(使用类似的规则,但边界不同)。相应地写下你的表达方式。使用括号让读者清楚你的真正意思。
  • 你有一个叫True的成员,大写T吗?那会令人困惑。如果您指的是关键字 true,请不要将不可为空的布尔表达式与 true 文字进行比较。而是使用if (OnlyAbove &amp;&amp; …)

标签: c# if-statement


【解决方案1】:

我会说:不,你在这方面做得不对 - 主要是因为你的代码目前正在做的事情没有意义。

有助于解决此类问题的一件事是用普通英语来表达它 - 所以你可以从:

if (OnlyAbove == True
    && (Top1 > Currentnumber || Top2 > Currentnumber)
    && (Bottom1 < Currentnumber || Bottom2 < Currentnumber)
   )
{
   Statement
}

...到...

if OnlyAbove
    AND (CurrentNumber above at least one of the two Tops)
    AND (CurrentNumber below at least one of the bottoms)

毕竟,这些内括号之间的内容是“Top1 > current OR Top2 > current”——这真的不是你要找的。​​p>

会有所帮助的方法 - 不仅编写这样的代码,而且阅读它,就是有点过分使用变量。变量在帮助您记录逻辑方面很棒,因为您可以非常描述性地命名它们。

想象一下这样的代码:

bool betweenRange1 = (Currentnumber > Bottom1) && (Currentnumber < Top1);
bool betweenRange2 = (Currentnumber > Bottom2) && (Currentnumber < Top2);
if (OnlyAbove && betweenRange1 && betweenRange2)
{
    Statement
}

... IF 语句开始看起来更具可读性 - 一眼就能看出它的含义。如果您在解析 IF 语句时遇到问题,那么养成这个习惯并不是一个坏习惯。也许有点矫枉过正......但矫枉过正比编写你不确定它在做什么的代码要好得多:-)

【讨论】:

  • 谢谢您,先生,您的回答对我的短语也有帮助:D
猜你喜欢
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-18
相关资源
最近更新 更多