Начнём с двойного отрицания. Разумеется, делать так не следует!
Александр Ильин писал(а):
Предлагаю довести начатое до абсурда и все
конкретные вопросы о возможной нештатной ситуации заменить на простое "Всё в порядке?"
Alexey_Donskoy писал(а):
Таким образом, правильно сформулированный вопрос одновременно является описанием ветки основного пути!
Верно! "Если всё в порядке, то можно продолжать". Информативность таких развилок равна нулю.
Ваша ремарка навела меня на интересную мысль о том, что развилка вообще далеко не всегда информативна!
На самом деле тут, по всей видимости,
нужен переключатель. И неважно, что всего два варианта. Если взять для примера что-нибудь реальное (более сложное, чем приведённое описание Седны), то вариантов будет и больше.
Ну, рассмотрим почти вырожденный случай - два варианта. Есть основной поток действий и есть нештатная ситуация, которую мы в данном месте алгоритма обрабатываем. Нештатность подразумевает, что она случается реже, поэтому вполне оправдано вынесение обработчика нештатной ситуации вправо.
Повторю ещё раз для определённости. Что мы имеем на данном участке алгоритма:
- рассмотрение конкретной нештатной ситуации (нужно описание критериев нештатной ситуации);
- основной поток (ветка) при отстутствии ситуации и вспомогательный поток (ветка) обработчика ситуации.
Вам это ничего не напоминает?
Когнитивно-эргономический вопрос на засыпку:
почему я должен описывать конкретную сущность (сиуацию с её обработчиком) при помощи не предназначенной для этого развилки?Как раз попытка описать сущность неадекватным языком приводит к компромиссам и сложностям, как-то:
- необходимость конкретной формулировки вопроса типа да/нет;
- возможная необходимость инверсии при желании втиснуть алгоритм в дополнительные формальные ограничения;
- возмжная необходимость вынесения критериев ситуации на другой уровень абстракции (так, можно отдельно детализировать вопрос "всё в порядке?" и т.п.).
Возвращаясь к моим конкретным ответам,
Цитата:
"Произошла ошибка или остановка базы?" - "Состояние сервера штатное?".
"Клиент выполнял транзакцию?" - "Все транзакции клиента завершены?".
вынужден не согласиться с Вашей критикой.
Состояние сервера может быть штатное либо аварийное. Только в штатном мы продолжаем обработку клиентских запросов. Второй вопрос более адекватен по смыслу проверки.
Вопрос о состоянии клиентских транзакций, вообще говоря, симметричен. Можно рассматривать его как с той, так и с другой стороны. Но принцип остаётся тем же. Критерий ситуации - наличие незавершённых транзакций. Обработчик ситуации - откат незавершённых транзакций.