O desafio do “código limpo”

Ferramentas de análise estática ajudam os times a produzir “código limpo”

Empiricamente, todos sabemos que os desenvolvedores gastam muito mais tempo tentando entender código antes de começar a fazer qualquer alteração que resolva um bug ou entregue alguma funcionalidade para o negócio. Há quem diga que essa relação chega a ser de 90/10, ou seja, em uma hora de trabalho, são investidos 54 minutos entendendo o código e apenas 6 fazendo algo que, efetivamente, entrega valor.

Nesse contexto, qualquer iniciativa que reduza o esforço necessário para entender código tem potencial de causar impacto enorme de produtividade – tanto na perspectiva técnica dos times de desenvolvimento, quanto na perspectiva econômica que interessa tanto o negócio.

Há tempos, sabemos que o caminho para reduzir o tempo gasto entendendo código é empenhando algum esforço escrevendo código-limpo que é mais fácil de entender. Infelizmente, a formação de profissionais com essa competência exige tempo. É difícil, caro e toma tempo fazer com que todos no time possuam, de forma nivelada, conhecimento, habilidades e, principalmente, as atitudes imprescindíveis para esse fim. Exatamente por isso, é necessário que busquemos formas de abreviar esse processo.

Dentre as várias iniciativas que conhecemos para melhorar a qualidade do código produzido, em um ambiente saudável, a que costuma produzir efeitos mais imediatos é a adoção de ferramentas de análise estática automatizada de código.

Em .NET, por exemplo, ferramentas como Resharper e NDepend atingiram níveis de maturidade surpreendentes e conseguem produzir insights valiosos mesmo para programadores experientes. Em outras linguagens e plataformas, há ferramentas igualmente poderosas.

Seja integrando-as as IDEs, seja incluindo-as como etapa no processo de Build, as ferramentas de análise estática conseguem identificar “sujeiras” comuns de escrita e indicar alternativas para a limpeza.

Modernamente, essas ferramentas consolidam e explicitam o conhecimento da comunidade sobre como escrever código limpo. Métodos muito grandes, com muitos parâmetros, mal comentados, com alta complexidade são identificados. Classes muito grandes, com baixo nível de abstração e oportunidades de reduzir o acoplamento são detectadas. Chamadas ao banco de dados realizadas  na interface, referências cíclicas, objetos criados sem necessidade são apontados. Padrões de nomes para variáveis, métodos, classes, namespaces são especificados e indicados. Se não bastasse tudo isso, a cada nova versão essas ferramentas ganham mais e mais capacidades que podem acelerar tanto o processo de desenvolvimento quando gerar métricas confiáveis que suportem o planejamento de evolução do software.  

Treinar o time é, sem dúvidas, fundamental. Melhorar a cultura é uma necessidade inquestionável. Mas, modernamente, é difícil encontrar boas razões para que ferramentas de análise estática não sejam amplamente incorporadas as rotinas das organizações. Os investimentos são nulos frente aos benefícios potenciais.

Em Resumo
  • O problema

    Desenvolvedores gastam muito tempo entendendo e depurando código e acabam tendo pouco tempo, proporcionalmente, para fazer alterações que agregam valor. Esse desperdício poderia ser minimizado se o código fosse bem escrito - a ponto de facilitar o entendimento. Infelizmente, é necessário muito tempo para formar profissionais com competência para escrever código assim.
  • O insight

    Ferramentas de análise estática modernas conseguem detectar e apontar oportunidades de melhoria de código. Elas podem ser integradas tanto a IDEs quanto ao processo de build e, bem utilizadas, aceleram a capacitação do time para escrita de código limpo.
  • Os benefícios

    Quanto menos tempo os desenvolvedores dedicam para entender código, mais tempo tem disponível para produzir novas features, melhorando o Velocity.

Mais posts da série O desafio do “código limpo”

Deixe uma resposta

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