В жизни каждого разработчика всегда полно неопределённости. Как этот кусок кода будет взаимодействовать с тем? Что будет, если сеть упадёт? Что если гамма-лучи инвертируют вон тот двоичный разряд? Что мама готовит сегодня на обед? Есть ли у радона запах?
На самом деле, большая часть информатики - это учение о том, как избавиться от неопределённости. Для высших есть формализмы, вроде Пи-вычислений и
CSP. Иногда простая диаграмма состояний - как дар свыше. Если вы с такими не сталкивались, не расстраивайтесь - у вас ещё всё впереди.
Noah прислал следующий Javascript-код, который показывает, как убрать неопределённость насчёт состояния программы при ветвлениях:
function GetGridTable()
{
if (document.getElementById('" + gridPanelTable.ClientID + @"') != null)
{
return document.getElementById('" + gridPanelTable.ClientID + @"');
}
else if (document.getElementById('" + gridPanelTable.ClientID + @"') != null)
{
return document.getElementById('" + gridPanelTable.ClientID + @"');
}
else
{
return null;
}
}
Andy, в свою очередь, прислал пример из PHP, показывающий, как гарантированно убедиться, что файл существует:
if(file_exists($fDir."announcement.jpg") and
file_exists($fDir."announcement.jpg")) {
$nImg = "announcement.jpg"; }
Одна из проблем вышеприведённых фрагментов в том, что у каждой из ветвей могут быть свои побочные эффекты. Создавать ветвления, где оба потока команд выполняют строго одни и те же действия, непросто, однако - как выяснил
Ashton - возможно, даже в языках вроде C#:
if (BatchProcessor.ProcessBatch())
{
}
else
{
}
Оригинал.