Escolar Documentos
Profissional Documentos
Cultura Documentos
Quando voc escreve um cdigo, voc consegue AFIRMAR que seus argumentos so vlidos o suficientes para a execuo?
Pois bem, neste texto irei falar sobre Assertions, ou traduzido que significa Assertivas que se encaixam perfeitamente como Boas prticas
de programao
Mas afinal o que e do que se trata isso?
Assertivas so validaes lgicas de uma condio dada como necessria para o correto funcionamento do algoritmo.
um timo recurso a ser utilizado que pode at identificar bugs iniciais ainda no ambiente de desenvolvimento.
Seu uso recomendado apenas para verso de debug, isto , no faz sentido usar Assert como validao de regras de negcio, disparando
mensagens deste tipo para o usurio final. Para validao de regras de negcio o melhor criar testes unitrios (Assunto para prximos
posts).
Como utilizar?
Por padro, o Delphi j inicia habilitado ou desabilitado em seu projeto a configurao Assetions, conforme o Target, por exemplo:
Menu Project|
Options|
Delphi Compiler|
Compiling
Target = Debug Configuration => Debugging = True.
Target = Release Configuration => Debugging = False.
Voc ainda pode habilitar ou desabilitar no prprio cdigo fonte usando as diretivas: {$C+} e {$C-}
No Delphi Assert uma funo interna do compilador que pode ser utilizada pelo mtodo Assert.
A sintaxe do mtodo :
Assert(Condition: Boolean; [Message: string]);
O primeiro parmetro Condition a expresso a ser verificada como verdadeira.
O segundo parmetro Message opcional podendo ser utilizado para descrever a mensagem informada quando a condio no for
verdadeira.
Caso o parmetro Message no for utilizado, o Delphi ir exibir a mensagem padro Assertion failure
Vamos ver na prtica:
Exemplo 1:
function Dividir(const Divisor, Dividento: integer): Double;
begin
Assert(Divisor <> 0, Divisor deve ser diferente de Zero!);
Result := Divisor / Dividendo;
end;
Exemplo 2:
procedure AdicionarItemNaLista(const Item: String);
begin
Assert(Item <> EmptyStr, Item no contm um valor para adicionar a lista!);
Lista.Add(Item);
end;
Exemplo 3:
procedure CopiarObjeto(ObjetoOrigem,ObjetoDestino: TObject);
begin
Assert((ObjetoOrigem <> nil) and (ObjetoDestino <> nil), Os objetos Origem e Destinos devem ser criados!);
end;
procedure LimparCamposEMoverFocoParaCampoData;
begin
Assert(FormCadastro.Showing, No possvel mover o foco para o campo data, pois o FormCadastro no est sendo exibido);
Campo1.Clear;
Campo2.Clear;
EditDataCadastro.SetFocus;
end;
Alm disso, voc ainda pode customizar seus Assertions.
Sempre que um assero levantada, o Delphi executa a rotina referenciada pela varivel AssertErrorProc.
A varivel AssertErrorProc est localizada na unit System e , um ponteiro para uma funo com a seguinte assinatura:
Compartilhe isso: