"
Supported by

When code smells

It happens very often that, while programming, I smell something strange. It’s usually hard to identify it right away. It usually starts like a faint fragrance. But, as I become more aware of it, eventually it starts stinking and I understand where it comes from. Even then it is not immediately clear why that particular thing smells bad.

My experience tells me this works in 5 steps:

  1. I can smell something but I don’t know here it comes from;
  2. I identify where it comes from but I don’t know why;
  3. I understand the reason that thing stinks but I don’t know how to stop it. And I don’t want to make it go away by just pouring perfume all over it;
  4. I figure out what I need to change in order for the bad smell to go away;
  5. I change the code and everything is pleasant again. And I have a blissful feeling of relief all over my body.

Most times bad smells are a consequence of something incorrect at design level. Due to this, the solution will often require code refactoring in order to correct its design. It is also not uncommon that the solution for a code smell to suddenly appear out of the blue as a consequence of an unrelated refactoring which finally reveals the reason for that smell.

A good programmer must have a sharp nose. But he must also have the will to make whatever is possible for the code he’s working on to always smell good. A bad programmer will just get used to living in a smelly environment.

The term “code smell” was coined by Kent Beck, one of the original participants in the Agile manifesto, the creator of Extreme Programming and one of the fathers of Test Driven Development. All these methodologies are his attempts at minimizing potential code smells.

Particularly popular in the Agile world, this metaphor is so good that it should be adopted by all programming environments. Particularly in the ones that smell worse.

Greetings from Abapinho.

2 comentários a “When code smells”

  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


About Abapinho
Abapinho runs on WordPress
Articles (RSS) e Comments (RSS).