Как различать пустое значение, ноль и отсутствие поля

Назовите состояния отдельно

В описании входных данных назовите три состояния отдельно: передан ноль, передано пустое значение, поле отсутствует. Не назначайте им одно поведение из удобства таблицы. Сначала выясните, какой смысл имеет каждое состояние в процессе.

Учебные входы для суммы: 0, null и объект без поля суммы. Последний в рабочем примере обозначен словом MISSING только для объяснения. Это не строковое значение, которое следует отправить в систему вместо отсутствующего поля.

Разберите три заявки

Разберите три заявки. В первой сумма явно равна нулю. Во второй поле присутствует, но значения нет. В третьей отправитель не передал поле. Названия состояний описывают вход, а решение принять или отклонить его требует отдельного правила.

Не подменяйте null пустой строкой без согласования. Если источник действительно присылает пустую строку, добавьте четвёртый случай и сохраните его точный вид.

Для каждого входа запишите ожидаемое действие как вопрос владельцу процесса: сохранить, запросить уточнение, применить подтверждённое значение по умолчанию или отклонить. В учебной задаче выбор ещё не сделан.

Зафиксируйте ожидаемую обработку

После согласования внесите ответы в словарь полей и проверочные сценарии. Укажите, какое состояние обработано и что должен получить пользователь. Не называйте предложенные сценарии пройденными тестами без запуска.

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

При ошибке начните с конкретной заявки и принятого правила, а не с общего обещания «очистить данные». Такая постановка позволяет обсуждать смысл суммы, не смешивая отсутствие сведений с настоящим нулём.

Размещено в Рабочие процессы.