Dicas para o desenvolvimento de um software – Parte 3

Dicas para o desenvolvimento de um software - Parte 3Este é o terceiro artigo sobre algumas dicas para o desenvolvimento de um software com qualidade e uma funcionalidade. Aproveito a oportunidade para agradecer a todos que leram 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, 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, por uma equipe de desenvolvimento. Definir uma padronização do código auxilia na legibilidade e na compreensão 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 da instrução. A figura abaixo exemplifica um código bem identado utilizando a linguagem C++:

Exemplo de identação de código
Exemplo de identação de código

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 os addons cnPack ou GExperts, ambos gratuitos.
As variáveis, classes, objetos e métodos 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 assimilada do que uma variável chamada “vSTotPed”. O código fica mais legível quando se trabalha com esse tipo de nomenclatura, mesmo que o nome fique ligeiramente maior.


Tratamento de exceções
Por mais que o desenvolvedor faça testes na aplicação antes de liberar a versão, é 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 operaçã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 significativas para reportar a exceção ao usuário. Dessa forma, faz mais sentido exibir a mensagem “Ocorreu um erro. Verifique os dados.” 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 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. Porém, é bastante inconveniente 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. 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. Observe que a atualização automática está presente na maioria dos softwares atuais, como navegadores e antivírus. Este tipo de módulo não é simples de ser desenvolvido, mas é plenamente funcional e reduz o trabalho de atualizar vários computadores simultaneamente.

Exemplo de tela de atualização
Exemplo de tela de atualização


Programação Orientada a Objetos

No mundo da programação, a maioria dos métodos e componentes são modelados em classes para proporcionar a reutilização de código e a manipulação de objetos. A princípio, trabalhar com classes e objetos pode ser relativamente complexo, mas sem dúvida garante maior controle de tudo o que acontece dentro da aplicação. Através da Programação Orientada a Objetos (POO), é possível reaproveitar ou reduzir várias linhas de código por meio de técnicas como abstração, herança e polimorfismo. Além disso, definir a visibilidade dos atributos de uma classe e criar métodos privados para manipulação de valores permitem que a estrutura interna da aplicação não seja exposta a outros níveis. Há muito o que se falar sobre Programação Orientada a Objetos, visto que o seu conceito é bem abrangente diante do ponto de vista da Engenharia de Software.

Programação Orientada a Objetos
Principais elementos da P.O.O.

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 um grande detalhamento de informações para simplificar a modelagem das classes e das tabelas do banco de dados. Em conclusão, pode-se dizer que a utilização da POO evita que o sistema sofra consideráveis alterações e adaptações após a implantação, reduzindo o tempo de desenvolvimento e minimizando os erros de implementação.

 

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


Confira também as outras partes dessa série de artigos:

Dicas para o desenvolvimento de um software – Parte 1
Dicas para o desenvolvimento de um software – Parte 2
Dicas para o desenvolvimento de um software – Parte 3
Dicas para o desenvolvimento de um software – Parte 4
Dicas para o desenvolvimento de um software – Parte 5
Dicas para o desenvolvimento de um software – Parte 6
Dicas para o desenvolvimento de um software – Parte 7
Dicas para o desenvolvimento de um software – Parte 8
Dicas para o desenvolvimento de um software – Parte 9
Dicas para o desenvolvimento de um software – Parte 10
Dicas para o desenvolvimento de um software – Parte 11


 

Compartilhe!
Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Pin on PinterestEmail this to someone

6 comentários

  1. Grande Andre, esta de parabéns por essa publicação,
    muita boa as dicas para o desenvolvimento…Continue assim e que Deus te abençoe.

  2. Boa noite, André.

    Esse detalhe de identar o codigo é exelente, melhor fazer na criação do que ter que fazer depois, para poder
    entender o que foi feito a muito tempo, a tabulação e identificar os “end’s”(if, while,…), é facil na criação, mas na depuração após algum tempo, é dificil pra quem criou quanto mais para outros em uma equipe.
    Evitei o uso de variaveis com nomes descritivos claros por muito tempo, pelo receio de que qualquer um que lesse o BD ou Descompila-se o programa, entenderia tudo, pura bobagem e só dificultou para mim.
    Afinal quem tem esse nivel de conhecimento, cria seu proprio codigo.
    O tratamento de exceções realmente é muito util e bom, mas evito usar ‘try’ porque trava no debug(erro meu).
    Agora ao conceito de ‘Programação Orientada a Objetos’, sempre achei que usava(objeto botão, edit…), mas parece que não é nada disso, só aprendendo e entendendo pra saber.
    Recomendo a todos acompanharem.

    Mais uma vez,Obrigado pelos artigos.

    1. Bom dia, Gerson, tudo bem?
      As dicas contidas nessa parte da série realmente são importantes, em especial, o tratamento de exceções e programação orientada a objetos.
      Este último, Gerson, é uma técnica de programação que consiste em modelar, organizar e estender classes, trabalhando bastante com o conceito de abstração, encapsulamento, polimorfismo e herança.
      Veja um exemplo básico dessa técnica:

      TPessoa = class
      private
        FCodigo: integer;
        FNome: string;
      protected
        function ValidarPessoa; virtual;
      public
        // Define Pessoa Física ou Jurídica
        constructor Create(const peTipoPessoa: TTipoPessoa);
      
        property Codigo: integer read FCodigo write FCodigo;
        property Nome: string read FNome write FNome;
      end;
      
      ....
      
      var
        oPessoa: TPessoa;
      begin
        oPessoa := TPessoa.Create(ePessoaFisica);
        ...
      end;

      Abraço!

  3. Já vi esse tipo de código e até mesmo tentei usar, tentei achar matérias mas nada foi claro e objetivo. Esse é um dos motivos de nunca ter usado C e Java, pois parece que elas usam bastante estas técnicas. Aí está um departamento não sou nem iniciante.
    Vou tentar entender.
    Obrigado.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Preencha o campo abaixo * Time limit is exhausted. Please reload CAPTCHA.