Classe João e Classe Maria

Às margens de uma floresta, um lenhador muito pobre vive com seus filhos e esposa – a madrasta de seus filhos. Em tempos de dificuldade, a falta de alimento os leva a uma solução um tanto quanto drástica: abandonar os filhos na floresta por não ter como alimentá-los.

Apesar do apelo dramático, este é o verdadeiro início do conto de fadas “João e Maria” (ou, Hãnsel und Gretel) dos Irmãos Grimm, conhecido clássico infantil.

Na continuação do conto, João e Maria, conhecendo o triste objetivo de sua madrasta, decidem marcar o caminho para conseguir voltar. Da primeira vez com sucesso, ao usarem pedras brancas. Na segunda, com pão.

E isso me lembra de um clássico quando se fala em AOP: Log.

O principal exemplo em textos de AOP utiliza este clássico no intuito de auxiliar o entendimento do novo conceito.

Talvez porque o processo de Log em uma aplicação é amplamente conhecido como necessário, mas os meios e real utilização dele se aproximam das idéias de João e Maria. Alguns logam com pedras, outros com pão. Existem os que logam. E os que não.

João e Maria, como classes, têm outras responsabilidades. São crianças. Querem brincar e se divertir. Não deveriam se preocupar em marcar o caminho percorrido.

Mas muitas vezes surgem os temidos “bruxos do Processo e do Padrão”, terror dos implementadores. E com sua voz de trovão estabelecem: Todo método deve logar o início e fim de seu processamento. E as crianças tremem.

Nas primeiras semanas, os implementadores todos animados procuram as pedras brancas mais polidas para utilizar nos Logs. Claras identificações de entrada e saída de cada método. Até que o tempo começa a ficar escasso. Assim como as pedras. E surge o pão. Pedaços de Log jogados aqui e ali, que acabam sendo engolidos por outros códigos. Implementadores esfomeados que comem o pão e esquecem do Log. E João e Maria ficam perdidos na floresta.

E então temos a AOP, como uma fada-madrinha, para resolver o problema de João e Maria e acalmar os bruxos do Processo e do Padrão. Um aspecto de Log, que assume a responsabilidade de marcar o caminho e logar o início e fim de processamento de cada método. Um aspecto que pode ser colocado ou retirado de todo o sistema como um passe de mágica. Sem dependências com João e Maria, sem dependência com implementadores.

Este é um clássico da AOP que demonstra bem como uma responsabilidade – a de determinada regra de Log – pode ser retirada do código interno das classes. E transferida a um aspecto específico, de responsabilidade bem definida.

Ganha a classe, ficando mais objetiva e limpa. Ganha o implementador, focando apenas no desenvolvimento da funcionalidade da classe. Ganha o sistema, com um processo de Log padronizado e garantido, e ainda de fácil alteração. E como em todos os clássicos contos de fadas: vivem felizes para sempre.

Tags:

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>