Prazer em desenvolver software
Desenvolver software saudável é uma arte, atualmente temos visto muito software de qualidade no mercado, porém quando existe qualquer implementação evolutiva o software começa a desencadear uma série de bugs, por essa razão conceitualmente existe uma diferença entre software saudável e software de qualidade, software saudável em curtas palavras é o software que é evoluído com facilidade e não gera bugs.
Existem várias classes de bugs, alteração de infraestrutura, sintaxe, lógica de implementação entre outros, porém o pior de todos é aquele bug silencioso, pois ele acontece apenas no ambiente de produção e você não consegue entender a causa do erro e onde o erro acontece, por esse motivo a implementação de Log é muito importante porque fornece aos desenvolvedores a rastreabilidade necessária para descobrir o que esta gerando erro, e a novo recurso Caller Infor Attributes disponibilizado no C# 5.0 nos ajuda com essa questão.
Vamos implementar um exemplo bem simples para entendermos o conceito, vale lembrar que estamos sendo puristas tratando log de erro apenas com C#, não estamos utilizando nenhum componente orientado a aspecto que existe no mercado.
Na versão do C# 4.0 foi disponibilizada uma feature bem legal que já existia em outras linguagens o Named e Optional Arguments, usando dessa feature os arquitetos da Microsoft tiveram a idéia de adicionar atributos para parâmetros opcionais que representassem o método, arquivo e linha que o erro ocorreu.
Como podemos observar a Solução do Projeto é bem simples
Interface nos fornece um comportamento chamado Error que será implementado pela classe Logger

Classe Logger implementa o comportamento da interface ILog, fornece uma instancia para classes externas acessarem o método Error.

Agora iremos chamar esse comportamento de uma classe cliente, no nosso caso do Main.
Resultado :
Como podemos notar é retornado a descrição do erro, método, arquivo e linha que o erro ocorreu, com essas informações em mãos bastaria persistir esses dados em uma base de dados e implementar uma rotina para enviar notificações via email sobre os erros que estão acontecendo no ambiente de produção.
Vantagem
A sintaxe é clara e objetiva, oferece uma maneira de trabalhar com Log de erro de uma forma customizada não excedendo. Os componentes de terceiros existentes no mercado orientado a aspecto oferecem muito mais do que é realmente necessário, muita das vezes gerando arquivos xml enormes, além da lógica interna desses componentes ser altamente complexas uma vez que é realizado um scan do assembly depois que o C# compiler converteu esse assembly para IL e posteriormente é reescrito o IL.
Então Caller Info Attributes fica como uma alternativa mais limpa e customizada.
Para saber mais
Aprofunde seu conhecimento sobre C#
Artigo sobre Named e Optional Arguments MSDN
Caso de Uso de Named e Optional Arguments
Comentar
Comentário de Wellington Nascimento em 1 março 2016 às 13:41 Parabéns pelo artigo, realmente esse recurso é muito legal. Já usei ele em um logger que fiz recentemente e realmente ajuda bastante. Abraços!
© 2019 Criado por Ramon Durães.
Ativado por
Você precisa ser um membro de DevBrasil para adicionar comentários!
Entrar em DevBrasil