TField.Name do seu jeito

Cada equipe de desenvolvimento tem sua convenção de nomenclatura de campos no banco de dados. Há quem prefira só letras maiúsculas ou só letras minúsculas. Há quem use CamelCase, que é o padrão Pascal/Delphi. Há quem use sublinhado (’_') para separar palavras e há quem não use. Sem argumentos aqui sobre qual é melhor e qual é pior.

TField.Name AntesO que é chato é criar campos persistentes para um dataset na IDE do Delphi e ver o nome dos componentes TField ficar com o nome formatado como na base de dados.

Dependendo da sua convenção, um dataset chamado cdsCliente, por exemplo, pode criar objetos TField com nomes estranhos como cdsClienteNOME, cdsClientenome_cliente ou cdsClienteENDERECO_BAIRRO. Todo esses casos fogem ao estilo padrão de nomenclatura de identificadores no Delphi (Object Pascal Style Guide, de Charles Calvert).

Decidido a encontrar de uma vez por todas uma solução para esse problema, fui em busca da fonte da VCL. A princípio, a unit DB era o lugar que me pareceu mais óbvio para buscar o momento em que um TField é criado. De fato, é mesmo criado ali por um método de TFieldDef, mas… coisa estranha, em nenhum momento a propriedade Name é atribuída.

Descobri afinal que a definição do nome de um TField é feita somente pela IDE, através de “component editors”. Graças a São Borland! Assim não teria que criar um descendente de TDataSet, o que seria um preço alto demais a pagar. Tudo que tive que fazer é criar um desdencente de TDSDesigner, sobrescrever o método virtual DoCreateField reformatando a propriedade Name como eu queria e registrar o novo “component editor”.

O código final tem apenas 74 linhas e uma vez instalado como um package na IDE é totalmente transparente a sua utilização. Apenas adicione os campos pelo “Fields Editor” e a formatação dos nomes será automática.

TField.Name DepoisNos exemplos anteriores, com o pacote instalado os componentes TField seriam criados como cdsClienteNome, cdsClienteNomeCliente ou cdsClienteEnderecoBairro, livres de sublinhados e maiúsculas.

O código fonte está disponível para download.

Só testei em Delphi 2007. Quem quiser testar em outras versões e me dar um feedback será bem vindo. De antemão eu sei que não vai compilar direto em versões anteriores ao Delphi 6, por causa das mudanças na unit DesignIntf, mas isso pode ser ajustado sem muita dificuldade.

Comments

4 Responses to “TField.Name do seu jeito”

  1. Erick Sasse on October 24th, 2008 8:25 am

    Muito legal a dica!

  2. Fábio Gomes on October 24th, 2008 8:37 am

    Opa, muito legal.

    Pena que pra padronizar um projeto já em andamento seja complicado :(

  3. Fellipe on October 29th, 2008 8:38 am

    Sei não, gosto dos nomes no Delphi igual ao do banco, fica fácil de procurar no caso de problemas. Mas é questão de gosto, e gosto pode-se mudar…

  4. Alexandre José on October 31st, 2008 5:36 pm

    Grande dica!

Deixe uma Resposta




XHTML: Você pode usar essas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">