Desenvolvimento

4 jan, 2016

Extreme makeover no seu código-fonte

Publicidade

O código-fonte é um dos artefatos mais importantes para quem desenvolve software, porém infelizmente muitos deles precisam de um tratamento ao estilo extreme makeover. Neste artigo, vou apresentar algumas técnicas para “rejuvenescer 10 anos” no código.

Figura2_ProgramaExtremeMakeOver

Desde os primórdios da programação, houve a preocupação com diversos aspectos relacionados ao código-fonte, indo desde a sua eficácia e eficiência até aspectos não técnicos. Pulando para algo mais recente, nos últimos anos diversos pesquisadores, autores, programadores e profissionais da área vêm reforçando o aspecto de manutenabilidade do código com o objetivo de torná-lo mais claro quando for necessário trabalhar com ele ao longo do tempo.

Pensando nisso, resolvi escrever este artigo inspirado pela enxurrada de programas de TV do tipo reality show, nos quais um participante é escolhido para receber um tratamento geral de beleza, incluindo vestuário, maquiagem, cabelo, cirurgias e tratamentos cosméticos, dermatológicos e de odontologia. No final desses programas, é clássica a apresentação de fotos e vídeos mostrando como a pessoa era antes e depois do tratamento. Certamente existe muito de fantasia nisso, afinal de contas estamos falando de televisão, mas o princípio de modificações estéticas também pode ser aplicada ao código.

Figura3_AntesDepois

Não vou entrar em detalhes e argumentos a favor da modificação do código-fonte com o objetivo de torná-lo mais legível, uma vez que existem muitos livros, artigos, conteúdos e materiais que justificam tal prática. Vou aqui me ater a falar um pouco das técnicas que podem ser utilizadas para realizar um “extreme makeover” no código.

Em primeiro lugar, eu sempre recomendo a utilização de uma ferramenta do tipo embelezador de código (code beautifier). Essas ferramentas formatam o código de modo a deixá-lo mais legível e de claro entendimento sem modificá-lo sintaticamente e semanticamente. Existem várias opções, mas recomendo o site Codebeautify.org como ponto de partida. Outro bom exemplo é o SQL Formatter, que faz modificações muito interessantes no código SQL, como visto nas figuras abaixo (antes e depois).

Figura4_ScriptSemFormatacao

Figura5_ScriptFormatado

O próximo passo é meio óbvio: entender o que o código faz. Isso pode parecer uma tarefa simples ou árdua dependendo da linguagem, conhecimento do domínio e do que o programador que criou ou fez manutenção no código produziu. Conforme o código vai sendo lido, é interessante adotar diversas técnicas para um “Código Limpo”, tal como explicado no livro homônimo. Para quem tem um pouco de medo e receio de mexer no ,código recomendo a aplicação das técnicas mais simples, como a mudança de nomes de variáveis primeiro. Só com essas técnicas o código já ganha muito em legibilidade e manutenabilidade e, com certeza, já terá outra cara.

Uma vez que o código já tenha sido entendido e alterado levemente, é hora de pegar no pesado e usar técnicas de refatoração. Seguindo a analogia do programa de beleza, refatorações seriam equivalentes a tratamentos estéticos simples ou cirurgias plásticas relativamente complexas. Novamente, a dica aqui é começar pelas refatorações mais simples, especialmente aquelas que quebram classes, métodos e arquivos com muito código-fonte em unidades melhores. Isso facilita muito quando for necessário analisar o código no futuro. Conforme vai se ganhando confiança e experiência, junto com algumas toneladas de testes, pode-se aplicar algumas refatorações mais complexas que modificam estruturalmente o projeto.

Figura6_Refatoracao

Por fim, uma outra técnica pouco conhecida, mas muito importante, é a técnica de rejuvenescimento de código (Code Rejuvenation). De acordo com a definição oficial, rejuvenescimento de código é a transformação de código existente para um código-fonte substituindo recursos depreciados (deprecated) e expressões idiomáticas de código por algo mais moderno.

A propósito, o código marcado como depreciado (deprecated) já é indicado em muitos IDEs e também por mensagens de compiladores. Por exemplo, o Eclipse coloca um traço na chamada de métodos depreciados, tornando fácil a visualização de onde está algo que não deve ser mais empregado. A substituição dos métodos, classes e outros elementos de programação depreciados pode não ser muito fácil e gerar diversas implicações, porém ela realmente atualiza o código e, entre seus efeitos colaterais, faz com que os programadores se conectem com as novas formas de fazer as coisas na linguagem. O exemplo clássico é o uso de coleções tipadas introduzidas no Java: inicialmente, o uso dos caracteres <> causou um certo desconforto por quem já estava acostumado com objetos do tipo ArrayList, mas com o tempo tal recurso acabou sendo adotado em larga escala devido às suas vantagens.

Um ponto importante que deve estar passando pela cabeça de quem lê este artigo é o seguinte: “mal tenho tempo de dar manutenção no código existente, quanto mais aplicar técnicas para tornar o meu código mais legível ou com maior índice de manutenabilidade”. Bem, esse pensamento é muito comum e já foi amplamente discutido nas referências clássicas de refatoração. Basta aqui dizer que o investimento realmente vale a pena e que isso vai ser algo que, mais cedo ou mais tarde, pode fazer a diferença entre pouco minutos ou diversas horas para realizar uma modificação em um código-fonte existente.