Delphi - Значение, присвоенное 'x', никогда не использовалось

Предположим, у меня есть следующий код:

function DoSomething:Boolean;
var obj : TMyObject;
i : Integer;
begin
  Result := False; //We haven't executed GetValue() correctly yet
  obj := TMyObject.Create();
  try
    //perform some code that may produce an exception        
    i := obj.GetValue();
    //Set the return to True as we executed GetValue() successfully
    Result := True;
  finally
    //do some cleanup
    obj.Free; 
  end;
end;

Компилятор Delphi жалуется, что значение, присвоенное Result, никогда не используется в первой строке.

Возможно, я упускаю что-то очевидное, но я не понимаю, зачем компилятору это оптимизировать (если оптимизация включена).

Меня всегда учили явно задавать мои переменные, чтобы не было путаницы в том, каковы их значения. Кроме того, если функция GetValue()сгенерирует исключение, строка Result := True;никогда не будет выполнена. Таким образом, мы находимся во власти того, чем Delphi инициализировала переменную.

Является ли этот код безопасным/приемлемым? Должен ли я просто удалить первую строку метода, что затруднит его чтение? В противном случае мне придется отключить конкретное предупреждение компилятора, но я не хочу этого делать, поскольку это предупреждающее сообщение может дать полезную информацию.

5
задан Simon 13 June 2012 в 05:53
поделиться