Глядя на это чисто с семантической точки зрения - я не могу придумать ни одного случая, когда не существует неявного другого для каждого if.
если машина не остановится до того, как я доберусь до стены, я упаду, иначе я не упаду.
За исключением семантики:
Ответ на этот вопрос зависит отокружение, и каков результат ошибки.
Бизнес-код?Делайте то, что говорят ваши стандарты кодирования.
ИМХО, вы обнаружите, что его написание, хотя поначалу кажется, что это слишком много работы, станет неоценимым через 10 лет, когда вы вернетесь к этому коду.Но, конечно, это не был бы конец света, если бы вы пропустили важное «анти-условие».
Однако: код безопасности, безопасности или жизненно важный код?Это другая история.
В этом случае вы хотите сделать две вещи.
Первое: вместо того, чтобы проверять неисправность, вы хотите доказать, что не неисправность.Это требует пессимистического взгляда на вход в любой модуль.Вы предполагаете, что все не так, пока не докажете, что это правильно.
Второе: в жизненно важной ситуации: вы НИКОГДА не хотите причинить боль пациенту. :
bool everyThingIsSafe = true;
if(darnThereIsAProblem())
{
reportToUserEndOfWorld();
}
return everyThingIsSafe;
Упс.Я забыл установить EveryThingIsSafe false.
Подпрограмма, которая называет этот фрагмент, теперь обманывается.Если бы я инициализировал evertThingIsSafe в false - я всегда в безопасности, но теперь мне нужно предложение else, чтобы указать, что ошибки не было.
И да, я мог бы изменить это на положительный тест - но тогда мне нужноостальное для обработки ошибки.
И да, я мог бы назначить EveryThingIsSafe () немедленный возврат чека.А затем проверил флаг, чтобы сообщить о проблеме.Неявное другое, почему бы не быть явным?
Строго говоря, неявное иное, что это представляет, является разумным.
Для аудитора FDA / безопасности, возможно, нет.
Если это явное, может указать на тест, егоеще, и что я справился с обоими условиями четко.
Я кодирую медицинские устройства уже 25 лет.В этом случае вы хотите другое, вы хотите по умолчанию в этом случае, и они никогда не будут пустыми.Вы хотите точно знать, что произойдет, или как можно ближе.Потому что игнорирование условия может кого-то убить.
Посмотрите на Therac-25.8 тяжело ранен.3 мертвых.