sexta-feira, 25 de março de 2011

A Abstração da Abstração

Eu acho engraçado como somos condicionados a tentar encapsular tudo o que é externo a nossa aplicação em nossas próprias classes. Muitas vezes baixamos um framework para um determinado trabalho e o encapusalmos por inúmeros motivos, para tornar o código um pouco mais aderente com que a funcionalidade se propõe a fazer, para facilitar uma determinada operação do framework que estamos utilizando, e por ai vai.

O problema é que muitas vezes limitamos a utilização da ferramenta a aquilo que estamos diexando disponível nas nossas classes. O quanto isso vale a pena?

Vou pegar como exemplo os nossos Repositories, geralmente o utilizamos como uma abstração de acesso a dados, e deixamos disponíveis em nossos repositories os famosos métodos Save, GetById, GetAll, etc…
Bom, hoje em dia é muito comum utilizarmos um framework ORM para facilitar as implementações de banco de dados, mas perceba, o ORM é uma abstração de acesso a dados, claro, não igual ao Repository, porém não deixa de ser uma abstração de acesso.

Quando encapsulamos os métodos do ORM nos nossos repositories estamos perdendo poderosas features como por exemplo o Multiquery e e Future do NHbernate.
Não tenho a pretensão de classificar quando isso é bom ou ruim, mas cada caso precisa ser analisado com calma.

Fica ai a bandeira levantada.
Até a próxima.

Nenhum comentário: