Responda rápido, qual a diferença entre estes dois comandos:

CopyFile(‘arq1.txt’, ‘arq2.txt’, True);

CopyFile(‘arq1.txt’, ‘arq2.txt’, False);

Eu não saberia dizer para que serve esse terceiro parâmetro booleano sem usar o tooltip do Delphi ou ler a documentação.

E se fosse assim?

CopyFile('arq1.txt', 'arq2.txt', cmFailIfExists);

Melhor não?

Pois é, a outra opção poderia ser algo como:

CopyFile('arq1.txt', 'arq2.txt', cmOverwrite);

Há algum tempo atrás li uma dica que venho aplicando desde então: substituir parametros booleanos por enumerações. O código fica muito mais fácil de ler e entender.

No exemplo acima usei uma função da API Win32 para exemplificar, mas se fossemos reescrever a função CopyFile, ficaria algo assim:

type<br /> TCopyMode = (cmFailIfExists, cmOverwrite);

procedure MyCopyFile(const Source, Dest: string; CopyMode: TCopyMode);