Thursday, June 7, 2012

Dicas para o desenvolvimento de um software funcional – Parte III

Este é o terceiro artigo sobre algumas dicas para o desenvolvimento de um bom software. Aproveito a oportunidade para agradecer a todos que leram, comentaram e compartilharam o primeiro e o segundo artigo sobre este assunto. Espero que as dicas neste artigo tragam um pouco mais de conhecimento aos leitores, e mais uma vez, quero que sintam-se à vontade para expressar qualquer opinião sobre este texto.

Padronização de código

Este item é bastante importante quando o projeto é desenvolvido por mais de uma pessoa, ou melhor, uma equipe de desenvolvimento. Definir uma padronização do código auxilia na legibilidade e no entendimento do que está sendo executado na aplicação. Identar o código nos blocos de condição “if-else” e nos laços de repetição são uma das práticas que ajudam os desenvolvedores a identificar facilmente a execução de um método. Identação significa “estruturar” as linhas do código em tabulações de acordo com o nível de execução.

Quando há uma grande quantidade de aninhamento de blocos no código-fonte, a identação se torna ainda mais importante para associar o início e o fim de cada bloco aninhado. Algumas ferramentas de desenvolvimento, como o NetBeans e o Visual Studio, possuem o recurso de destacar o aninhamento quando o cursor do mouse é posicionado na chave que abre ou fecha o bloco. Desenvolvedores em Delphi também podem adquirir essa funcionalidade com o addon gratuito cnWizards.

As variáveis, classes, métodos e funções também devem possuir nomes sugestivos de acordo com o seu objetivo. Portanto, uma variável com o nome “SomaTotalPedidos” é bem mais fácil de ser identificada do que uma variável chamada “vSTotPed”. Mesmo que o nome seja ligeiramente maior, o código fica mais legível quando se trabalha com esse tipo de nomenclatura.

Tratamento de exceções

Por mais que o desenvolvedor faça testes na aplicação antes de publicá-la, é natural que alguns erros ainda possam ocorrer inesperadamente para o usuário. Estes erros são decorrentes de problemas de semântica, gravação de dados inconsistentes, falhas de acesso à memória ou até mesmo eventos inesperados do sistema operacional. No ambiente de programação, os erros são conhecidos tecnicamente como “exceções”. Uma boa prática de programação exige que exista um tratamento de exceções em todos os pontos mais sensíveis do código. Inserções e atualizações no banco de dados são exemplos de operações que possivelmente podem retornar algum erro para o usuário.

A recomendação é envolver este código em um bloco de tratamento de exceção e executar uma função de rollback (desfazer as alterações no banco de dados) caso algum erro seja encontrado. Ao utilizar tratamento de exceções, também é possível criar mensagens mais transparentes para reportar a exceção ao usuário. Dessa forma, faz mais sentido exibir a mensagem “Ocorreu um erro. Tente novamente.” ao invés de “An error occurred. Access violation at address 004068EC“. Estes tipos de mensagens em inglês técnico geralmente são desconhecidas para o usuário e não trazem nenhum tipo de informação para auxiliá-lo.

Atualização do sistema

A cada atualização do sistema, normalmente é necessário substituir o executável no computador do cliente, rodar scripts SQL e alterar alguns parâmetros de configuração. Sendo assim, é preciso ir até o cliente e fazer todo o processo manualmente no computador local. Para evitar a viagem, uma alternativa é realizar a atualização remotamente através de softwares como o TeamViewer, LogMeIn ou VNC. O problema surge quando há dezenas ou até centenas de computadores para serem atualizados. Se a atualização for feita em um computador por vez, pode demorar dias para terminar a atualização em todos as máquinas.

Portanto, ao invés de realizar a atualização manualmente, crie um módulo exclusivo para automatizar este processo. A atualização automática está presente na maioria dos softwares atuais, como navegadores e antivírus. O objetivo é permitir que o próprio sistema verifique novas versões, baixe o arquivo de atualização e realize todo o processo automaticamente, sem a intervenção do usuário. Este tipo de módulo não é simples de ser desenvolvido, mas é plenamente funcional e permite atualizar vários computador simultaneamente.

Programação Orientada a Objetos

No mundo da programação, a maioria dos métodos e componentes são modelados em classes para facilitar a reutilização de código e a manipulação de objetos. Trabalhar com classes e objetos pode ser relativamente complexo, mas sem dúvida garante um maior controle de tudo o que acontece dentro da aplicação. Através da Programação Orientada a Objetos (POO), é possível reaproveitar várias linhas de código por meio de técnicas como herança e polimorfismo. Além disso, definir a visibilidade dos atributos de uma classe e criar métodos para manipulação de valores permitem que a estrutura interna da aplicação não seja exposta a nível de usuário.

Utilizar POO no desenvolvimento de um sistema também facilita a produção de regras de negócio, abstração de dados e a integração com padrões de projeto.

Durante a fase de projeto, a Programação Orientada a Objetos é amplamente praticada por projetistas e analistas de sistemas através da linguagem UML para modelagem de dados. O Diagrama de Classes, por exemplo, fornece uma grande quantidade de informações detalhadas para simplificar a modelagem das classes do projeto e das tabelas do banco de dados. Em conclusão, a utilização da POO na modelagem evita que o sistema sofra constantes alterações e adaptações durante o andamento do projeto, reduzindo o tempo de desenvolvimento e minimizando os erros de implementação.

Muito obrigado mais uma vez pela leitura. Um abraço a todos!

Desenvolvedor de sistemas há 6 anos em linguagens Delphi, C# e PHP. Bacharel em Sistemas de Informação, colunista sobre tecnologia e entusiasta em Desenvolvimento Ágil. Atualmente trabalha com processamento de dados e desenvolvimento de sistemas voltados para gestão administrativa.

Veja perfil e 7 post(s)

0 comments:

Post a Comment