"
Apoiado por

Quando o código cheira mal

É frequente ao programar começar a sentir um cheiro desagradável. Normalmente não consigo logo identificar o que é. Sinto apenas uma leve mas incómoda fragrância. À medida que vou cheirando com mais propósito vou conseguindo perceber de onde vem. Mas mesmo nessa altura, muitas vezes ainda não me é perfeitamente claro porque é que aquele cheiro dali vem.

Da minha experiência o processo tem 5 fases:

  1. Começo a sentir um mau cheiro mas não sei de onde vem;
  2. Identifico de onde vem o cheiro mas não sei porquê;
  3. Compreendo porque é que cheira mal mas não sei como fazer com que deixe de cheirar mal. E não quero disfarçar com perfume;
  4. Faz-se luz e compreendo o que tenho de mudar para parar o mau cheiro;
  5. Altero o código e o mau cheiro passa. E uma sensação de alívio percorre o meu corpo.

Na maior parte das vezes os maus cheiros são consequência de algo menos correcto no desenho. Daí que, geralmente, a solução obrigue a refactorizar o código para corrigir o desenho. Também me acontece com frequência que a solução para o mau cheiro surja por consequência de uma refacturação que revela finalmente o problema mal cheiroso.

Um bom programador não só deve ter um nariz apurado como a força de vontade para fazer o que for necessário para o seu código cheirar sempre bem. Um mau programador é aquele que diz “primeiro estranha-se, depois entranha-se”. Já para não falar nos que, habituados a viver na pocilga, vivem rodeados de tantos maus cheiros que perderam a sensibilidade no olfato.

O conceito de “code smell” foi inventado por Kent Beck, um dos participantes no manifesto Agile, criador do conceito de Extreme Programming e um dos pais do Test Driven Development, tudo abordagens com vista a minimizar potenciais maus cheiros no código.

Particularmente popular no mundo Agile, esta metáfora é tão boa que devia ser adoptada em todos os meios. Principalmente nos mais mal cheirosos.

O Abapinho saúda-vos.

Deixe um comentário


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).