Refatore seu tempo

Refatore o código e ganhe tempo e produtividade!

O Refactoring, basicamente, é melhorar o design do código sem alterar a funcionalidade nem quebrá-lo. 

Quando você se depara com um código muito ilegível e precisamos dar manutenção nele, o que você faz? Primeiro devemos verificar se existe testes automatizados para essa funcionalidade. Se houver testes pode pular para a última etapa que o trabalho vai ser mais simples.🙂 Um código com muita infra-estrutura misturado com código de negócio, com variáveis abreviadas e métodos sem nenhum sentido, provavelmente te fará gastar um bom tempo para entender o objetivo dele.

Para entender como separar o domínio do que é infra-estrutura leiam o livro sobre DDD.

Se simplesmente fizermos mais um ‘if’ para atender a solicitação do usuário estaremos contribuindo com esse trabalho sujo. Um ‘if’ pode parecer ser uma solução (momentânea), porém a qualidade começa a cair nesse exato momento. Estaremos prejudicando nosso próprio trabalho e, pelo contrário que muitos possam pensar, prejudicando a produtividade.

Com um código complexo como esse é bastante provável que não se tenha testado todas possibilidades e provavelmente precisaremos enfrentá-lo novamente. ‘Enfrentá-lo novamente’ significa olhar para o mesmo código que já analisamos e tentar entender denovo o que ele está fazendo, ou seja, o cliente está pagando esse tempo de entendimento que ele já havia pago. 

É interessante que o cliente saiba dessa dificuldade, do time de desenvolvimento, de manter o código. Porém cuidado com o que vai falar para ele pois somos todos profissionais! Não adianta só falar mal do código pois agora a responsabilidade é nossa.

Devemos fazer um trabalho de conscientização para que o cliente entenda que será necessário fazer refatorações e essa funcionalidade pode demorar mais do que o cliente espera. Porém um grande débito técnico está sendo retirado do projeto. É claro que tudo tem que ser devidamente priorizado junto ao cliente, pois o objetivo maior é atendê-lo. Entretando, cuidado para que esse débito não caia em esquecimento!

Para nos tornarmos bons, devemos conhecer os os nomes de Gurus e saber o que eles fazem. Como por exemplo Martin Fowler, Kent Beck dentre tantos outros. Atualmente estou lendo o livro “Secrets of the Rockstars Programmers” em que Ed Burns entrevista Rod Johnson. Interessante que ambos dizem amar as variáveis dos códigos com nomes longos. Eles citam que já que IDE’s tem auto-completar, porque não usar nomes longos? Rod diz usar nomes com até 50 caracteres!

Se você precisar dar manutenção em um projeto que não tem testes automatizados, refatore (e teste muito)! Nesse caso é recomendado é ler o livro: 

Working Effectively with Legacy Code

Por outro lado, havendo testes, faça as devidas refatorações e dispare-os para ver se nada foi quebrado. 

Antes de qualquer alteração, seja correção ou algo novo, faça os testes automatizados (TDD). Não contribua para a incerteza desse projeto e invista na confiança no seu trabalho. Pelo menos o que você fizer tem que ter teste automatizado.

Independentemente do trabalho que estivermos fazendo, temos que nos responsabilizar por ele. Mesmo que não formos o autor do projeto, se o código não estiver claro, é nossa obrigação alterá-lo para que se torne mais legível. Fazendo isso, gastaremos um pouco mais de tempo fazendo as refatorações. Porém se precisarmos alterá-lo novamente é certo que a produtividade será absurdamente maior.

Uma frase muito interessante de Martin Fowler:

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”

-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999″

Gosto muito, e recomendo a leitura do artigo “Machucando o código por diversão e lucro“.

O Urubatan escreveu um artigo muito interessante sobre Refactoring e outro sobre “Comentário no código é para os fracos”

O Papo também escreveu algo relacionado aqui.

Se você quer gosta de Ruby e quer se tornar um expert sobre testes, sigam os excelentes artigos da Improve It. Já tem esse e esse.

Publicado em arquitetura. 1 Comment »

Uma resposta to “Refatore seu tempo”

  1. André Faria Gomes Says:

    Post Legal Ricardo. Parabéns!
    Também escrevi sobre refactoring uma vez aqui.

    Abraço


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: