ЕСЛИ функция с && и || в то же время - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу сделать, ЕСЛИ при нескольких условиях И & & и ИЛИ || на нем

у меня есть два диапазона числа Top1 - Bottom1 и Top2 - Bottom2

и выполняется только когда Currentnumber находится в этих двух диапазонах я делаю это хорошо?

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

1 Ответ

2 голосов
/ 01 апреля 2019

Я собираюсь выйти на конечность и сказать: нет, вы не справляетесь с этим - главным образом потому, что то, что делает ваш код в настоящее время, не имеет смысла.

Одна вещьчто помогает с такими вещами, это сформулировать это на обычном английском - так что вы переходите от:

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» - что на самом деле не то, что вы ищете.

Что-то, что поможет - не только писать код, подобный этому, но читать по ходу дела, значит немного переборщить с переменными.Переменные удивительны , помогая вам документировать логику, поскольку вы можете назвать их очень наглядно.

Итак, представьте код, который выглядит следующим образом:

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

... thatЗаявление IF начинает выглядеть намного более читабельным - это сразу видно, к чему оно приводит.Если у вас возникли проблемы с синтаксическим анализом операторов IF, это не плохая привычка.Может быть, немного излишним ... но излишним намного лучше, чем с кодом, вы не уверены в том, что он делает: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...