4 boas práticas no desenvolvimento de software que ajudam na qualidade da sua aplicação
Atualmente estamos presenciando um avanço exponencial em termos de tecnologia. Muitos consideram que não somos simplesmente adeptos à tecnologia, mas sim imersos nesse mundo tecnológico que “não para de crescer”. Com isso, nossas vidas têm sido transformadas pelas constantes evoluções tecnológicas, principalmente se observarmos a área de desenvolvimento de software.
Por exemplo, acesse o seu celular agora e veja quantos aplicativos você tem, e principalmente quantos desses você não vive sem. Esse é um dos “poderes” da Engenharia de Software, e a tendência é que aumente cada vez mais o uso de softwares no nosso cotidiano. Sendo assim, aqueles que desenvolvem assumem uma grande responsabilidade de construir um software não somente funcional, mas de qualidade.
E esse conceito de qualidade, por mais que seja relativo - de acordo com a percepção de cada indivíduo - podemos considerar que implica em aplicações mais resilientes (vide as constantes evoluções da tecnologia), com ótimo custo/benefício e que agregam mais valor aos clientes.
Sendo assim, é evidente a necessidade de usar boas práticas no desenvolvimento de software, uma vez que elas são responsáveis por trazer benefícios à sua aplicação, tais como: robustez, agilidade e até mesmo economia de recursos. Essas práticas ajudam a manter a qualidade do software. Particularmente, penso que a Engenharia de Software, apesar de suas peculiaridades, é similar em muitos aspectos com relação a outras áreas.
Por exemplo, a área de gastronomia, onde os “chefs” não iniciam a carreira conhecendo boas práticas - sabendo, por exemplo, que os alimentos jamais devem ser descongelados fora da geladeira, e sim sair do freezer direto para a geladeira.
A minha intenção ao citar esse exemplo, não é que você aprenda uma boa prática na cozinha (mas aprendeu, sabia dessa?), mas sim mostrar que boas práticas em qualquer área não é algo que se obtém do dia para a noite. Dominar os conceitos e aplicá-los no dia a dia consiste em muito esforço, paciência e sobretudo conhecimento.
E isso pelo simples fato de que nós seres humanos somos na maior parte das vezes habituados às “más práticas” do que às boas práticas, já que temos a tendência de aplicar uma prática que nos traga um resultado mais rápido e cômodo. Já a chamada “boa prática”, por vezes não traz um resultado imediato - mas exige uma dedicação muito maior.
Boas práticas não se resumem a uma “bala de prata” para o desenvolvimento de software porque se fosse assim não teríamos novos problemas e novas práticas surgindo o tempo todo no dia a dia, certo? Mas, calma lá. Existem aquelas práticas “mandatórias” no desenvolvimento de software, por assim dizer.
Neste artigo,vou te apresentar 4 boas práticas no desenvolvimento de software que vão ajudar você - como ajudam a mim e também à comunidade de desenvolvimento de software - a manter a qualidade da sua aplicação e a resolver os problemas do dia a dia.
#1. Clean Code
Clean Code (Código Limpo) é um conjunto de boas práticas na escrita do software, onde se aplicam uma série de técnicas que ajudam na escrita e na leitura do código, dessa forma tornando o seu código mais legível e de fácil manutenção. As primeiras impressões das técnicas do Clean Code surgiram em agosto de 2008 no livro Clean Code: A Handbook of Agile Software Craftsmanship, escrito por Robert Cecil Martin, mais conhecido como Uncle Bob.
Em 2008, Uncle Bob já tinha pouco mais de 38 anos de experiência na área de desenvolvimento, quando observou que o obstáculo principal no desenvolvimento de software estava relacionado à manutenibilidade do mesmo; ele partiu da premissa que um software nunca está totalmente finalizado, já que, ao longo do tempo, vão ocorrer mudanças, como atualizações e novas funcionalidades - o que requer que o código seja (ou esteja) cada vez mais “limpo” (ou “clean”).
Aplicar os princípios de clean code no seu dia a dia ajudará que o desenvolvimento de sua aplicação se torne cada vez mais simples e com uma melhor facilidade de manutenção, poupando assim tempo, esforços e custos que seriam altos caso o seu software não tivesse nenhum dos adjetivos citados acima.
Uma lista de algumas técnicas que fazem parte do clean code incluem:
- Regra do Escoteiro: uma das principais regras dos escoteiros é sempre deixar o lugar onde esteve mais limpo do que encontrou, e essa é uma filosofia que você deve levar para o seu código. Produza um código melhor do que você obteve. Se você e os membros do seu time levarem isso como um “estilo de vida”, a sua aplicação só tende a melhorar cada vez mais com o passar do tempo.
- KISS (Keep It Stupid Simple): “Mantenha isso estupidamente simples”. Manter as coisas simples é essencial. Conforme adquirimos experiências na vida, tendemos a complicar as coisas - a velha história de matarmos uma formiga com um canhão - quando poderíamos resolver e manter de uma forma muito mais simples.
- Lidando com erros: é importante que você saiba lidar com as exceções - os obstáculos que podem aparecer, como os famosos “erros” - que podem (e vão) ocorrer dentro da sua aplicação, dessa maneira garantindo que o software faça o que precisa ser feito.
- Nomenclaturas: as nomenclaturas que você usa no seu código são essenciais para um bom entendimento do código, sejam de classes, atributos, funções, arquivos etc. Lembre-se sempre: as nomenclaturas em desenvolvimento de software precisam ser sempre claras e objetivas.
#2. Testes
Os testes de software são fundamentais para garantir o controle da qualidade do software. Testes são processos que visam validar o software em diferentes cenários para verificar se o seu comportamento está de acordo com o planejado. O teste precisa garantir que todos os requisitos estipulados estão sendo atendidos, não focando apenas no caminho de sucesso, mas em caminhos que apresentam exceções.
Com os testes é possível manter logs (registros) contendo bugs encontrados, reportes de erros, possíveis melhorias e métricas, assegurando assim que os requisitos levantados estão sendo atendidos.
Algumas vantagens da utilização dos testes:
- Assegura que os requisitos estão sendo atendidos
- Gera confiança nos times envolvidos e no usuário
- Garante a entrega
- Ajuda na manutenção do sistema
- Antecipa falhas antes dos clientes
Tipos de teste:
Existem inúmeros testes e formas de serem executados. A execução deles serão de acordo com o tipo de validação que você pretende fazer no seu projeto, como por exemplo:
Teste de Unidade
Teste de Integração
Teste Operacional
Teste Positivo-Negativo
Teste de Regressão
Teste de Caixa-Preta
Teste Caixa-Branca
Teste Funcional
Teste de Interface
Teste de Performance
Teste de Carga
Teste de Volume
Testes de Estresse
Testes de Configuração
Teste de Compatibilidade
Testes de Instalação/Desinstalação
Testes de Segurança
#3. Refatoração do código
O processo de refatoração de código consiste em realizar mudanças (geralmente pequenas) no software, mantendo o mesmo comportamento externo, entretanto aprimorando o design e a sua estrutura interna, ou seja, altera-se a forma “como é feito” e não “o que é feito”. Uma característica importante da refatoração é que ela não adiciona e nem remove uma funcionalidade.
A refatoração permite que o software se torne resiliente (adepto a novas mudanças que surjam ao longo do tempo), possibilitando assim que o código do projeto caminhe juntamente com a evolução do produto.
Refatorar um projeto traz benefícios como: software mais legível, código resiliente a novas mudanças ao longo do tempo, facilidade para executar testes, facilidade para encontrar e corrigir bugs, evitar códigos duplicados, ou mesmo comentários em excesso no projeto.
Os benefícios que a refatoração fornece são ótimos, entretanto, há um grande questionamento dentro das organizações. Coisas como: “temos features novas a desenvolver, quando iremos refatorar?”; fato é que refatorar exige tempo (e até mesmo custos). Mas vale ressaltar aqui que não se trata de um desperdício de tempo, já que a refatoração ajudará justamente a eliminar desperdícios, uma vez que o código passará a ter uma boa manutenibilidade.
Não realizar uma refatoração necessária hoje, poderá acarretar em um problema no futuro, e sua correção poderá ser mais custosa. Portanto, não deixe para amanhã e comece a pensar nisso agora mesmo.
#4. Code Review
O code review é a prática de realizar revisões constantes no código de um determinado software. Geralmente esse processo ocorre quando há um novo commit (alteração no software).
A cada alteração realizada no código da aplicação, é importante revisar a nova mudança, tendo como objetivo compreender o que foi alterado e identificar possíveis problemas. Além disso, o code review é uma excelente ferramenta para encontrar problemas que não foram identificados na fase de testes.
Esse processo é realizado por outro desenvolvedor, diferente daquele que originalmente escreveu o novo código. O tempo médio de um code review costuma ficar entre 15 e 30 minutos, mas pode variar de acordo com o tamanho e a complexidade da mudança.
Após receber o feedback, é importante focar nos pontos positivos, resolver os pontos negativos apresentados e oferecer sugestões para resolução dos pontos levantados. Um aspecto importante é entender que o code review não tem um propósito de crítica pessoal, mas sim o objetivo de realizar um trabalho coletivo de qualidade.
Dicas para realizar um bom code review:
- Usar checklists
- Atentar-se a novas ameaças
- Unir automatização ao trabalho manual
- Reservar um tempo “tranquilo” para fazer a revisão
- Ser colaborativo
- Ser claro nos comentários
Por meio do code review falhas e bugs são corrigidos antecipadamente. Dessa forma, o software chegará ao ambiente produtivo e ao usuário final sem inconsistências. A revisão de código também oferece benefícios, como: identificar possíveis melhorias, compartilhamento de conhecimento entre os times, soluções diferentes para um determinado problema, e aprimoramento da união da equipe com um trabalho realizado em conjunto.
Conclusão
Neste artigo, apresentei 4 boas práticas de programação que oferecem suporte à qualidade do software. Vale ressaltar que existem muitas outras utilizadas pela comunidade, como Clean Architecture, os princípios SOLID (comumente utilizado no paradigma OO), reaproveitamento de código, padrões de documentação, Design Patterns e outros.
Utilizar boas práticas de programação no seu dia a dia trará ganhos para todos, desde a empresa onde trabalha, passando pelo time de desenvolvimento e usuário final. Um bom software não é simplesmente aquele que funciona, mas sim aquele que não gera custos exorbitantes para se manter depois de lançado.