Я смотрю на набор данных JSON из API и вижу такие вещи:
"lights_on":1,
"lights_off":0,
"doors_locked":0,
"doors_unlocked":1,
"sensors_tripped":0,
"sensors_not_tripped":1
Это только я, или это глупо иметь переменную для обоих состояний логического типа? в этом примере не имеет ли смысла проверять значение lights_on
и если 0
Это должно быть false
, если 1
Это должно быть true
В чем преимущество вышеуказанного набора данных JSON с переменными для true
а также false
состояния и я должен использовать это в моих программах?
Это просто эмуляция условий реального мира, когда вы хотите, чтобы как «истинная», так и «ложная» переменные реагировали. Их значения по умолчанию для обоих должны быть «ложными», что означает, что решение не было принято. Если оба были установлены в «истину», то было принято иррациональное решение. Это способ убедиться, что программное обеспечение работает правильно.
Как ни странно, тот же сценарий применяется к удаленным контактным выключателям для «дверь открыта» или «дверь закрыта». Благодаря тому, что оба состояния возвращены для анализа программного обеспечения, пользователи знают, что провода не закорочены, что может вызвать как открытое, так и закрытое состояние (нелогично), и оба провода не являются ложными, что обычно означает, что кабель обрезан или датчик плохой.
Это самая простая форма самопроверки, чтобы убедиться, что источник отчета о состоянии программного или аппаратного обеспечения действителен.
Это будет неявно использоваться, когда блок кода читает реальные логические входные данные, а следующий блок кода будет считывать флаги «истина» и «ложь», чтобы убедиться, что ответ правильный. Также в реальных условиях будет использоваться цифровой фильтр, чтобы убедиться, что ответ остается неизменным в течение примерно одной десятой секунды, в зависимости от того, насколько быстро программное обеспечение должно реагировать на изменение.
Тогда более нисходящий код будет действовать, выпуская отчет о состоянии, подавая сигнал тревоги, обновляя журнал, или любое количество функций, которые будут сочтены важными.
Я построил эти многоступенчатые потоки в нескольких своих устройствах ATE для тестирования продуктов.
Реальные входные данные могут быть шумными, а созданное программное обеспечение может иметь ошибки, поэтому любой неоднозначность ДОЛЖЕН быть отфильтрованным до того, как программное обеспечение конечной точки предпримет реальные действия.
Других решений пока нет …