假设我有以下代码:
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;
行将永远不会执行。所以我们受德尔福初始化变量的支配。
那么这是安全/可接受的代码吗?我是否应该简单地删除该方法的第一行,这会使其更难阅读?如果失败,我将不得不关闭特定的编译器警告,但我不愿意这样做,因为此警告消息可以提供有用的信息。