가정하자 나는 다음과 같은 코드가 있습니다델파이 -에 할당 된 값 '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;
델파이 컴파일러는 결과에 할당 된 값이 첫 번째 줄에 사용되지 않습니다 불평됩니다.
나는 분명히 뭔가 빠졌지 만 컴파일러가 최적화를 수행하는 이유는 알지 못한다.
저는 항상 자신의 값이 무엇인지 혼란스럽지 않게 명시 적으로 변수를 설정하도록 가르쳐 왔습니다. 또한 GetValue()
함수가 예외를 생성하면 Result := True;
행이 실행되지 않습니다. 그래서 우리는 델파이가 변수를 초기화했는지의 자비에 있습니다.
이렇게 안전하고 수용 가능한 코드는 무엇입니까? 메서드의 첫 번째 줄을 단순히 제거해야합니까? 이렇게하면 읽는 것이 훨씬 어려워 집니까? 특정 컴파일러 경고를 해제해야하지만,이 경고 메시지는 유용한 정보를 제공 할 수 있으므로이를 수행하는 것을 주저합니다.
초기화하지 않으면 컴파일러가 '결과'로 수행하는 작업에 대한 생각은 대답이 ** ** 없습니다. [결과 변수가 함수의 첫 번째 줄에서 정의 되었습니까?] (http://stackoverflow.com/q/10084043/576719)를 참조하십시오. –