Gerador de Classes em C#

2008-08-15

Das funcionalidade mais eficientes que pode haver é a possibilidade de autogerar código. Especialmente durante a fase inicial do coding da aplicação, gerar código das classes é uma seca. Mais se for multi-camada. Interfaces constantemente criadas, nomes repetidos constantemente e código que, de aplicação em aplicação, mantém-se sempre igual…

Os últimos projectos que desenvolvi permitiu observar muitos padrões em uso – o uso de objectos anuláveis frequentemente, o tipo de código de acesso aos dados constante, os métodos base existentes nas classes, etc. Algumas classes que desenvolvi já permitem a reutilização projecto a projecto, o que é óptimo. Por exemplo o de acesso a dados da BD SQLServer e SQLite (que ainda têm margem para melhorias), ou de escrita de dados em Excel, ou o de serialização para XML.

Mas para geração do código base é que ainda não tenho nada, e até agora tenho estado dependente do Visual Studio e algumas funcionalidades existentes. As versões Express ainda não tem esse tipo de funcionalidade implementada, mas tem pequenos truques que ajudam. O Sparx, que utilizei num projecto, é completo e resulta bem, mas pelo menos a versão que utilizei não resolveu todos os problemas.

O que preciso é de uma aplicação que gere os meus BO (business objects), a DAL (Data Acces Layer) e que aproveite correctamente os métodos de acesso que já gerei, o BLL (Business Logic Layer) caso o projecto necessite, e que me gere o SQL também, já agora. Preferencialmente, tudo adaptado ao meu workflow e padrão de código, similar e adaptado do esquema que o Imar Spaanjaars apresenta no site dele.

Há um tempo que imaginava tentar construir algo, que aproveitasse bem o que já desenvolvi até agora, para gerar código base para qualquer aplicação que eu venha a desnvolver. Algo do género do C# Classe Generator apresentados no CSharpFriends.com, que permite a inserção do Namespace, do classe, das propriedades, e que gere o código dos objectos e da DAL. Mas ao pesquisar para este post, encontrei algo interessante no site do Spaanjaars – um link para o MyGeneration. O MyGeneration é um gerador de código muito completo, e que permite introduzir templates; Suporta várias linguagens de programação (C#, VB.NET, JScript…), vários sistemas de BD (SQL Server, Oracle, Acces, SQLite, Firebird,..), conceito de projecto, e suporte a diversas arquitecturas ORM. O IDE parece bastante completo. E complexo.

Portanto surge o probelma normal de “Usar o que existe e poupar tempo (ou não)” vs. “Construir algo costumizado, e talvez mais simples (ou não)”. Vou ter de estudar melhor o MyGeneration a ver se encaixa.