Archive for the ‘Delphi’ Category

DUnit, finalmente usando Unit Tests

8/09/2006

Apesar de conhecer os benefícios dos testes unitários há um bom tempo, ainda não tinha tido a oportunidade para criar um. Prazo curtos, projetos com pouco MVC (tendo as classes/códigos de apresentação, negócio e persistência misturados), etc.

Atualmente estou desenvolvendo um controle de permissões granulares e tive a oportunidade de desenvolvê-lo todo separado do sistema e estou para iniciar o processo de integração ao sistema, porém antes de integra-lo resolvi gastar (a palavra certa seria investir) algum tempo na criação de testes.

O principal motivador realmente foi o tempo que eu estimei gastar com
todos os testes (entrar em várias rotinas, testar combinações de permissões pelo grupo ou pelo usuário, fazer dezenas de simulações, corrigir os erros e retestar tudo de novo) e achei que a utilização de testes unitários gastaria um tempo menor.

Depois que decidi fazê-lo demorei uma hora estudando como funcionava o DUnit e sua integração com o Borland Delphi 2006, em mais uma hora já tinha uma dezena de casos testados e ainda detectei dois bugs na minha classe.

Cheguei a conclusão que os testes unitários economizam (e muito) o tempo gasto em todo o ciclo de desenvolvimento.


Atualização
: Um amigo meu me falou que meu primeiro paragráfo estava um pouco confuso, melhorei ele um pouco.

Estilo de codificação em Delphi

11/08/2006

Me perguntaram recentemente qual o meu estilo de codificação: uso de maiúsculas, minúsculas, CamelCase, posição do begin, espaços de indentação etc. Respondi que é basicamente o mesmo da Borland, pelo menos eu “imito” o padrão das bibliotecas do Delphi, então achei este link que explica melhor.

Fiz uma auto-avaliação e acho que meu nível de aderência a este estile é próxima a 90% 😀

Até a próxima…

Interação Delphi – Zope/Plone com XML/RPC

9/08/2006

Ontem implantei em um cliente um programa desktop feito em Delphi e com alto uso de TClientDataSet (para quem não conhece pense em uma classe para simular tabelas de banco de dados em memória), os dados que alimentavam alguns TClientDataSets vinham através de XML/RPC de um servidor Zope/Plone através da biblioteca dxmlrpc.

Esta biblioteca parece um pouco abandonada, e apesar do protocolo está bem implementado precisou de algumas atualizações:

  • Suporte para Indy 10 (biblioteca que implementa protocolos para internet)
  • Suporte para autenticação (a falta disto praticamente inviabilizava a postagem de dados para o zope)
  • Suporte para especificação do encoding para o XML enviado (sem isto todos os acentos causavam erros)

    Tentarei enviar um patch para o autor nos próximos dias (preciso dar uma polida no código primeiro).

    O programa desktop tinha um objetivo bem definido: Permitir o cadastramento de dados off-line para o seu posterior envio em lote para o servidor Zope.

    Além do ganho de velocidade no cadastramento (sem espera entre a gravação de um registro e uma nova tela para cadastro) deixamos o servidor mais livre para as atividades de consulta e podemos escolher o melhor horário para o envio dos novos dados.

    O interessante aqui é que o Delphi (ambiente usado para geração do programa cliente) não possui suporte nativo a XML/RPC deixando apenas a solução via requests HTTP ou Web Services disponíveis, porém, esta última depende de uma série de bibliotecas externas serem instaladas no servidor.

    Acredito que a solução via XML/RPC (através do dxmlrpc) tenha simplificado e muito todo o processo, tornando mais simples a criação de clientes em Delphi para o servidores Zope.