Questa domanda ha già una risposta qui:
Sto lavorando su uno script di installazione, e in particolare ho molte cose da controllare e azioni che devono essere eseguite solo in caso di risultati correlati. Ad esempio, una cartella deve essere creata solo se non esiste:
MyDesktopFolderPath := AddBackslash(ExpandConstant('{commondesktop}')) +
'My Folder';
if not DirExists(MyDesktopFolderPath) then
begin
ForceDirectories(MyDesktopFolderPath); //Create full path
end;
if DirExists(MyDesktopFolderPath) then
begin
//Perform other actions
Invece di questo, potrei usare (sfruttare?) la valutazione del cortocircuito per renderlo più compatto:
MyDesktopFolderPath := AddBackslash(ExpandConstant('{commondesktop}')) +
'My Folder';
IsMyDesktopFolderExisting := DirExists(MyDesktopFolderPath) or
ForceDirectories(MyDesktopFolderPath);
if IsMyDesktopFolderExisting then
begin
//Perform other actions
Anche questo funzionerebbe, ma mi chiedo se sia una cattiva pratica, soprattutto perché è meno ovvio che le azioni possano essere eseguite. Qualche opinione su questo?
Modifica: come indicato da Secure, il codice non è completamente equivalente, ma l'argomento della discussione è ancora valido per altri casi.