Código Legado ou Código Como Legado?

Por Luiz Beluci

Antes de mais nada, este não é mais um texto pretensioso para lhe dizer como você deve realizar o seu trabalho, não que eu não seja pretensioso o bastante para isso, apenas não é a intenção deste artigo. Na verdade, gostaria de focar no desenvolvimento de sistemas e com estas palavras convidá-lo a pensar por um instante: você se orgulha do código que escreve?

Ao longo de sua carreira como profissional de tecnologia, muito provavelmente você já ouviu o termo “código legado” um número considerável de vezes, e quase que invariavelmente utilizado de forma pejorativa. Apesar de não haver uma definição absoluta para o termo, somos naturalmente tendenciosos ao tratar por código legado todo aquele código mais antigo, de difícil manutenção e que frequentemente apresenta muitos problemas. Mas, pense bem, deveria ser realmente assim? Como bons programadores que somos vamos “depurar” esta ideia.

Primeiramente gostaria de enfatizar que não acredito ser uma tarefa tão simples definir o termo “código legado” apropriadamente, ou sequer que seja possível. Se você fizer uma pequena pesquisa no Google por este termo, facilmente irá encontrar uma série de definições, sendo algumas levemente diferentes entre si, enquanto outras completamente estranhas. O fato é, que quase sempre são influenciadas pelo contexto onde estão inseridas, como, por exemplo, no livro Working Effectively with Legacy Code (Michael C. Feathers) onde o autor compartilha conosco a definição: “código legado é código sem testes”. O livro em si não é ruim, muito longe disso, mas a definição do termo em questão está fortemente ligada aos valores que o autor tenta transmitir sobre a importância dos testes unitários.

Infelizmente, assumo que não poderia fugir do contexto que me guia neste texto, e por isso, vou tentar me ater aos termos da forma mais simplista possível. Figurativamente, o verbete “legado” pode ser compreendido por aquilo que passa de uma geração à outra, que se transmite à posteridade, enquanto, no universo do desenvolvimento de software, o conceito de código se refere ao conjunto de símbolos escritos em linguagens de programação e estruturados de forma a guiar uma máquina na execução de tarefas específicas. Assim, se mantivermos a simplicidade de pensamento podemos compreender “código legado” como todo aquele código que escrevemos para compor um programa de computador e que será, não somente, utilizado, mas também mantido por nós mesmos e por outros que virão depois de nós.

Ao seu próprio modo, todo programador é uma espécie de autor e, como todo autor, possui leitores, independentemente da quantidade, portanto, ao escrever um código você tem a responsabilidade de se comunicar bem. Muitas pessoas acreditam que um programador, normalmente, apenas escreve grandes quantidades de código, mas não é bem assim. É claro que escrever códigos em profusão é uma constante da profissão, porém, uma boa parte do trabalho consiste na leitura e compreensão de todo o código previamente escrito e por isso, tornar o seu código legível é tão importante quanto torná-lo executável, pois ao mesmo tempo que todo programador é um autor, também precisa ser um ávido leitor.

Não pretendo discutir aqui, ao menos não por enquanto, técnicas ou boas práticas para se escrever um bom código para se comunicar bem com o seu leitor; nem aceitar as homéricas discussões sobre programadores que tem “o dom”. Na verdade, eu nem sequer acredito nisso. É claro que sensibilidade e um pouco de empatia ajudam muito, mas não é o principal. Pessoalmente, acredito que se trate mais de intenção e boa vontade e, por isso, gosto de parafrasear a bíblia, em Lucas 10:16, valendo-me de um velho ditado dinamarquês, cuja real origem eu desconheço, mas que diz: “honestidade em pequenas coisas não é uma coisa pequena”. Acredito que um dos fatores fundamentais para a qualidade do seu código não seja um grande projeto extremamente planejado e estruturado para tal, mas sim que a qualidade do seu código é o resultado de um milhão de pequenos atos altruístas de importar-se verdadeiramente com o seu trabalho.

Muitas pessoas poderão, e irão, argumentar que a qualidade do código não pode ser mantida, que ao crescer e se tornar mais e mais complexo um código invariavelmente perderá em qualidade. Porém, em resposta, podemos invocar nossos pequenos atos honestos e altruístas para, somente então, cuidar deste crescimento de forma apropriada. Lembre-se que o código não precisa ser totalmente reescrito toda vez que precisar crescer, porém, ao simplificar um pequeno trecho, ao eliminar um efeito colateral de um processo específico ou simplesmente melhorar o nome de uma variável, você já estará contribuindo para a manutenção e a consequente melhoria da qualidade do código e do seu trabalho, pois, como diz uma regra bastante comum no movimento escoteiro: “sempre deixe a área do acampamento mais limpa do que quando a encontrou”.

Ao retomar o título que introduz estas palavras, acredito na opção por uma visão positiva e pela qualidade, deixando de lado a ideia depreciativa do que consideramos como código legado, para que abracemos o código como nosso legado, porque no fim das contas, como você quer ser lembrado?