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