O valor de um código de alta qualidade pode ser difícil de comunicar. Alguns gerentes vêem isso como uma bobagem, um hobby caro para programadores excessivamente meticulosos, uma vez que investir na qualidade do código pode retardar o desenvolvimento a curto prazo e não parece alterar a experiência do usuário. Mas nada poderia estar mais longe da verdade.

É verdade que as empresas de tecnologia com um entendimento organizacional pobre da qualidade do código podem ser lançadas rapidamente e ter sucesso no curto prazo. Mas, ao fazer isso, eles incorrem em uma dívida invisível que aumenta toda vez que o código é alterado. Essa dívida não fica intangível por muito tempo. Uma vez que o produto ultrapassa um limite muito baixo de complexidade, o débito vence, consumindo gradativamente a produtividade de sua equipe de desenvolvimento e a usabilidade de seu software . Quando falamos em “ dívida técnica ” , esses são os perigos de que estamos falando.

As organizações que produzem software encontram-se na interseção de milhares de variáveis ​​diferentes. Qualquer coisa que afete o estado mental de um programador , a comunicação dentro de sua equipe ou os incentivos associados ao seu trabalho provavelmente se refletirá em seu código. Promover a qualidade do código, então, é parcialmente uma questão de melhorar a saúde organizacional e a competência como um todo. Neste artigo, definirei resumidamente a qualidade do código e explicarei como ela afeta toda a empresa, em seguida, concentre-se em alguns hábitos organizacionais que são eficazes para aumentá-la.

 

O que é qualidade de código?

 

De certa forma, aprender a codificar é aprender a ter empatia com uma máquina: sua atenção intensa aos detalhes, sua necessidade de parênteses correspondentes e capitalização consistente e a impotência de seus estados de erro. Essas necessidades podem ser tão estranhas e opacas que os mais experientes de nós ainda passam horas, até dias, perseguindo bugs que chegam a apenas alguns caracteres do código-fonte. Isso é cansativo. Às vezes, ter empatia com nossas máquinas é o máximo que podemos suportar. Nessas situações, recorremos a uma métrica simples: funciona? Como o propósito principal do código é fazer um trabalho, às vezes não olhamos para além disso.

Essa abordagem não é sustentável para qualquer um, mas o menor dos projetos, no entanto. Código não é sudoku, com uma única solução correta para cada problema. Existem infinitas maneiras de escrever qualquer tarefa de computação, e algumas são mais simples e previsíveis do que outras. Pequenas diferenças aqui se somam com o tempo. O código é escrito uma vez e lido mil vezes. Os programadores leem o código quando estão corrigindo bugs ou adicionando funcionalidades. Eles leem o código para lembrar como seus aplicativos funcionam. Eles leem o código para descobrir padrões que podem reutilizar em outro lugar. A única coisa que é feita para o código com mais frequência do que apenas lê-lo é executá-lo. Esta é a razão fundamental pela qual nos preocupamos com a qualidade do código. A utilidade de um trecho de código tem muito a ver com seu impacto nas pessoas que irão lê-lo. Quando escrevemos um bom código, economizamos tempo e esforço. Estamos facilitando o trabalho deles. Estamos fazendo um investimento que renderá dividendos dia após dia, ano após ano, até que o aplicativo chegue ao fim de sua vida.

Então, ironicamente, uma vez que treinamos nossas mentes para ter empatia com os computadores para que possamos escrever código funcional, é nossa responsabilidade lembrar como ter empatia com os humanos para que nosso código não os frustre.

Como é a qualidade do código em termos mecânicos? Vários livros têm sido escritos sobre o assunto, por isso não vou tentar explicar em profundidade. Mas, para dar uma visão geral, código de alta qualidade é um código que pode ser entendido rapidamente. Se um programador puder escolher um método ou classe de uma base de código aleatoriamente e entendê-lo profundamente em alguns minutos – não apenas sua funcionalidade e lógica de negócios, mas tudo de que depende e de todas as maneiras como pode ser usado – sem consultar muitos outros arquivos , então a base de código provavelmente é de alta qualidade. Uma vez que isso seja alcançado, a questão de saber se o código funciona corretamente é muito menos preocupante; ele pode ser alterado, corrigido ou excluído sem muito risco ou esforço.

Concedido, estou descrevendo um ideal filosófico aqui. Em um aplicativo do mundo real, sempre haverá partes que são inevitavelmente complexas ou confusas. Mas mesmo essas peças podem variar muito em qualidade. Não há situação em que a qualidade do código esteja completamente fora das mãos do programador.

 

Alguns dos fatores mais importantes na qualidade do código são:

 

 

Encapsulamento. O código de alta qualidade é mais frequentemente feito de componentes independentes: não se pode mudar o comportamento de um componente independente modificando algo fora dele, nem o componente modifica coisas que são externas a ele (dentro da razão – ele faz sentido para um componente ler e atualizar um banco de dados se isso for entendido como seu trabalho). Isso economiza tempo de desenvolvimento porque, quando um componente precisa ser consertado, atualizado ou excluído, os programadores gastam menos tempo procurando causas e efeitos externos.

 

Código idiomático. Linguagens de programação modernas têm sintaxe e métodos integrados para as tarefas mais comuns, como converter uma string em um número ou determinar se uma coleção contém um elemento específico. Eles são mais confiáveis, têm desempenho e são amplamente compreendidos do que qualquer coisa que um programador possa escrever do zero e exigem muito menos código do que um método personalizado. O código escrito de forma idiomática – ou seja, usando as convenções e recursos integrados de uma linguagem tanto quanto possível – é mais legível e requer menos manutenção.

 

Nomes significativos. Variáveis ​​e métodos em uma base de código são nomeados pelos programadores que os escrevem. Nomes sem sentido, como `x` ou` fn`, requerem que o programador entenda e lembre-se de camadas extras de contexto enquanto lê o código que as usa. Se houver mais do que alguns deles em um lugar, torna-se impossível manter tudo na memória de trabalho. O código de alta qualidade usa nomes de variáveis ​​específicos e descritiv