Fala pessoal,
Esses dias estava dando uma consultoria e encontrei um código cheio de exits no delphi algo que se utilizado sem critério torna a manutenção do código bem mais complicada e demorada.
vamos ver um exemplo disso:
function TForm1.PerguntaNome: string;
var
nome, sobrenome : string;
begin
Result := 'Preguiçoso';
repeat
if not InputQuery('Programa de teste', 'Nome :', nome) then
Exit;
if not InputQuery('Programa de teste', 'Sobrenome :', sobrenome) then
Exit;
until (nome <> '') or (sobrenome <> '');
Result := nome + ' ' + sobrenome;
end;
Agora vejamos uma forma de se escrever sem a utilização de exit, como fica muito mais simples e claro de se entender.
function TForm1.PerguntaNome: string;
var
nome, sobrenome : string;
begin
repeat
if (not InputQuery('Programa de teste', 'Nome :', nome)) or
(not InputQuery('Programa de teste', 'Sobrenome :', sobrenome)) then
Result := 'Preguiçoso' else
Result := nome + ' ' + sobrenome;
until Trim(Result) <> '';
end;
Note que o funcionamento de ambas as rotinas são idênticas porém escritas de forma diferente, da segunda forma notamos automaticamente que se a InputQuery de qualquer um dos valores (nome ou sobrenome) for cancelada o retorno de nossa função será ‘Preguiçoso’, do contrario, se em uma delas foi pressionado o botão ‘ok‘ então o retorno da nossa função será o nome + ‘ ‘ + sobrenome. Por ultimo no nosso repeat verificamos se o result contem algo diferente de ‘’ (vazio) caso seja positivo sai do laço e não pergunta mais para o usuário as informações.
O código deste exemplo esta disponível clicando aqui para download.
Reparem que este exemplo é pequeno mas imaginem uma rotina gigante que estamos acostumados ver no dia a dia o quanto o exit pode dificultar a visualização do que esta acontecendo e do que realmente deve acontecer.
Grande abraço,
Diego Garcia.
Nenhum comentário:
Postar um comentário