"
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.

2 comentários a “Quando o código cheira mal”

  1. Nuno Seara Diz:

    Parabéns pelo artigo. Este deveria ser de leitura obrigatória em todos os meios públicos ou privados onde se codifica não só em SAP Abap como em toda e qualquer linguagem de programação. Sabe também que infelizmente, em Portugal, há quem não se choque por ver centenas de SELECT….ENDSELECT com inúmeros LOOP…ENDLOOP dentro dos mesmos e ainda outros SELECT…ENDSELECT dentro dessses loops, páginas e páginas, assim como quem possa estar à frente de departamentos de IT que afirme que não se choca nada de ver hardcodes nos programas e para quem a programação orientada a objetos seja apenas uma miragem que se usa às vezes mas preferem dar preferência a módulos de função e subrotinas. Há quem inclusive prefira boicotar o trabalho dos outros para que não se possa produzir de acordo com as best practices do SAP Abap, transformando uma ferramenta espetacular como esta que utilizamos em algo completamente distorcido. Excelente artigo, este que publicaste já há algum tempo, o qual deveria ser de leitura obrigatória para todos os responsáveis por IT, todos mesmo. Grande abraço ! :)

  2. Nuno Godinho Diz:

    Olá Nuno, que bom que gostaste do artigo. Obrigado pelo comentário. Sendo que, neste caso, o mérito é inteiramente do Kent Beck :-)

Deixe um comentário


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