BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Código legível: Por que, como e quando você deve escrevê-lo

Código legível: Por que, como e quando você deve escrevê-lo

Favoritos

Se consultar os times de desenvolvimento, a maioria das pessoas diria "Queremos código legível". E até pode encontrar uma preferência por legibilidade sobre funcionalidade. Mas quando se trata de pedir às pessoas para definir a legibilidade, as opiniões começam a divergir. Essa foi a premissa da apresentação de Laura Savino no Explore DDD 2018. Laura comentou sobre porque queremos código legível, o que realmente significa ser legível, e quando a legibilidade deve ter prioridade absoluta sobre outras considerações.

O histórico de Savino como professora de francês para alunos do ensino fundamental, seguido por uma carreira como desenvolvedora e mentora de iOS, permitiu insights melhores do que as comparações típicas entre idiomas falados e linguagens de programação. Os desenvolvedores que estão começando a aprender uma nova linguagem geralmente começam escrevendo um "Hello, world!". Da mesma forma, "Bonjour", "Hola" ou "Guten-tag" provavelmente estão entre as primeiras palavras aprendidas por alguém que esteja começando com francês, espanhol ou alemão.

Assim como desenvolvedores passarão rapidamente pelo "Hello, world!", a linguagem falada se move para uma fase intermediária. Savino deu o exemplo de perguntar a um colega de turma em sua aula de francês se gostariam de tomar um café depois da aula (Voulez-vous prendre un café avec moi après les cours?). Mesmo que a resposta seja negativa (Désolé, je ne peux pas prendre de café après les cours), e que qualquer um que escute diga que essa foi a conversa mais entendiante de todas, você se sente no topo do mundo só de passar por um pequeno loop de feedback: Você declarou algo; Este algo foi entendido adequadamente; Houve uma resposta apropriada; Você entendeu a resposta. É como obter dados para exibir em um aplicativo para iOS - não é glamouroso, mas na primeira vez que é feito com sucesso, você obtém um pouco de dopamina.

A fase avançada do aprendizado de idiomas move o pensamento passado sobre a gramática. Seus objetivos foram além de estabelecer que é possível se entenderem na turma, e agora você precisa estar atento às nuances e sutilezas. Esse é o ponto em que as analogias com linguagens humanas começam a falhar, ou pelo menos requerem uma análise mais profunda.

Em uma revisão de código, não seria incomum ter uma pessoa declarando: "Estou tendo problemas para entender esse código", enquanto outra, possivelmente o autor, responde: "Mas é mais legível dessa maneira". Savino usa isso para ilustrar que "a legibilidade precisa de um leitor". O que complica a legibilidade para os desenvolvedores é que realmente há dois públicos distintos para a escrita deles: outros desenvolvedores e o computador. Uma vez que o computador reclama alto e é muito opinativo, além de ser rápido para nos dizer quando não nos entende, naturalmente nos orientamos para o computador. Reconhecendo esse predisposição, às vezes compensamos cercando nosso código com comentários legíveis por humanos. Mas, Savino nos adverte: "Não podemos comentar o nosso caminho para o código legível".

Savino esclareceu a diferença entre decifrar texto ou código e leitura fluente. Com um poema de E. E. Cummings, "quando as serpentes barganham pelo direito de se contorcer", foi exemplificado como uma bela e complexa peça de escrita leva a vários passos para realmente começar a entender seu significado. Esse mesmo nível de decifração acontece quando se encontra termos desconhecidos ao ler o código - olhando para um, e depois para o próximo e o próximo, nos leva a uma toca de coelho até que tenhamos esquecido o que estávamos originalmente tentando entender. Embora possa haver prazeres da compreensão profunda, Savino adverte que "a poesia cerebral não tem lugar no software de produção".

Por outro lado, a leitura fluente é um entendimento rápido e correto, sem sobrecarregar a memória de trabalho. Anos de experiência como leitor lhe dão a capacidade de percorrer rapidamente um artigo e ainda compreendê-lo. Savino acredita que o mesmo pode ser verdade com um código bem escrito. Quando o código é fácil de escanear sem esforço, uma parte do seu cérebro pode perceber

Tendo estabelecido as razões pelas quais o código legível é importante, Savino discutiu técnicas de como tornar o código legível. Evitar gírias e enunciar claramente é uma boa orientação para se comunicar com falantes não fluentes. No código, isso significa nomear um método beginApp() em vez de releaseTheHounds() e soletrar variáveis e resultados em cada etapa, em vez de encadear chamadas de função.

Savino também discutiu nossas habilidades de correspondência entre padrões instintivos e como as coisas que agem da mesma forma devem parecer iguais. Em um nível abstrato, isso envolve o uso do "teste de estrabismo" para observar a estrutura geral do código, para ver se algo se destaca. Em um nível muito mais baixo, tente evitar caracteres e símbolos semelhantes, incluindo!, I, l e 1, que podem levar à correspondência antipadrão. Finalmente, se estiver trabalhando em algo diferente, nomeie-o de tal forma que se destaque da multidão.

Um dos melhores conselhos para qualquer escritor é "conhecer o seu público". Quando seu público é alguém lendo seu código, Savino diz que é necessário ir um passo além e também acreditar em seus leitores. Quando alguém lhe disser que seu código não está claro, acredite neles e pergunte quais informações estão faltando e que dificulta a leitura do código. Trate a confusão como dados e use-a para melhorar a legibilidade do código.

Savino terminou mencionando alguns exemplos de quando a legibilidade precisa ser o principal guia. Em termos simples, quanto mais importante é um código, mais deve ser legível. Savino citou o guia de codificação do Laboratório de Propulsão a Jato da NASA, que afirmam que "o código de missão crítica não deve ser apenas discutível, mas trivialmente correto". Um cenário mais realista, envolvendo a comunicação humana, é a sinalização de fugas de incêndio, que não deveria exigir esforço extra para ser decifrado ao fugir de um incêndio.

Em seu time, converse sobre se e quando o código legível é necessário. Seu objetivo deve ser todos os membros do time lendo fluentemente. Savino concluiu incentivando todos a "Decifrar menos. Criar mais".

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT