Each language version is independently generated for its own context, not a direct translation.
Imagine que o software é como uma casa em constante construção. Os desenvolvedores são os pedreiros e engenheiros que constroem os cômodos, instalam a eletricidade e pintam as paredes.
Agora, imagine que, enquanto trabalham, eles deixam um diário de obra (os logs). Esse diário é crucial. Se a casa pegar fogo ou uma torneira começar a vazar, os bombeiros e encanadores olham esse diário para entender o que aconteceu, quando e por quê.
O problema é que, muitas vezes, esse diário é escrito de forma bagunçada, confusa ou até mentirosa. É aí que entra o conceito de "Cheiro de Log" (Log Smells).
O que é um "Cheiro de Log"?
Pense em um "cheiro" não como algo que você sente com o nariz, mas como um sinal de alerta. Assim como um cheiro de queimado na cozinha pode indicar um incêndio que ainda não se espalhou, um "Cheiro de Log" é um sinal de que algo está errado na forma como o software está sendo registrado, mesmo que o programa ainda esteja funcionando.
Se você ignorar esses cheiros, eles podem virar problemas graves: o sistema pode ficar lento, dados sensíveis podem vazar ou, quando algo quebrar, ninguém conseguirá consertar porque o diário de obra não faz sentido.
A "Caixa de Ferramentas" dos Problemas (A Taxonomia)
Os autores deste estudo foram como detetives que vasculharam a literatura científica para criar um catálogo de 9 tipos de "mau cheiro" que os desenvolvedores podem encontrar. Eles dividiram esses problemas em duas categorias principais:
- O Problema está no Código (O Pedreiro): O erro está na forma como o diário foi escrito.
- O Problema está no Diário (O Papel): O erro está no que foi realmente registrado.
Aqui estão os 9 "maus cheiros" explicados de forma simples:
1. Tempestade de Formatos (Format Turmoil)
- A Analogia: Imagine que um pedreiro escreve a data como "05/08", outro como "Agosto 5", e um terceiro apenas "5".
- O Problema: Os registros não seguem um padrão. É impossível usar um computador para ler tudo rapidamente porque cada um fala uma língua diferente.
2. Identidade Escondida (Undercover Identifier)
- A Analogia: O diário diz "Alguém quebrou a janela", mas não diz quem foi. Foi o João? A Maria? O gato?
- O Problema: Falta saber qual parte do sistema (ou qual "pedreiro") gerou o registro. Sem isso, você não sabe onde procurar o erro.
3. O Nível de Alerta Confuso (Mercurial Logging Level)
- A Analogia: Você usa um grito de "INCÊNDIO!" para avisar que o café acabou, e um sussurro para avisar que o prédio está desabando.
- O Problema: Os avisos de gravidade estão errados. Um erro pequeno é marcado como crítico, ou um desastre é tratado como algo trivial. Isso confunde quem tenta priorizar o que consertar.
4. A Variável Enganosa (Deceptive Variable)
- A Analogia: O diário diz "O valor é X", mas esquece de dizer que X é o preço do pão ou a temperatura do forno. Ou pior, escreve "Erro: [Objeto]" em vez de "Erro: Falha na conexão".
- O Problema: As informações registradas são vagas, erradas ou ilegíveis para humanos.
5. Loucura nas Mensagens (Message Madness)
- A Analogia: Um dia você escreve "Conexão estabelecida", no outro "Conectando..." e no outro "Falha ao conectar", tudo com gramática ruim e sem sentido.
- O Problema: As mensagens são inconsistentes, cheias de erros de português ou repetitivas, tornando a leitura um pesadelo.
6. O Log Perdido no Vento (Logging Lost in the Wind)
- A Analogia: O pedreiro esqueceu de anotar que a parede caiu. O diário simplesmente pula de "Construindo parede" para "Parede caída", sem registrar o momento da queda.
- O Problema: Informações cruciais não foram gravadas. Quando o problema acontece, o diário está em branco.
7. O Lixo no Log (Landfill Logs)
- A Analogia: O pedreiro anota tudo: "Respirei", "Pisquei", "O sol estava brilhando". O diário tem 1 milhão de páginas, mas a informação importante está escondida no meio de tanto lixo.
- O Problema: Excesso de dados inúteis. Isso deixa o sistema lento e torna impossível encontrar o que realmente importa.
8. Os Guardas Dormindo (Sleeping Guards)
- A Analogia: O pedreiro gasta energia escrevendo um relatório detalhado, mesmo que ninguém precise ler aquele relatório naquele momento.
- O Problema: O código gasta recursos (memória, bateria, tempo) para gerar logs que nem serão usados, ou gasta recursos para gerar logs que deveriam ser bloqueados.
9. O Esqueleto no Armário (Skeleton in the Closet)
- A Analogia: O próprio diário está escrito de forma tão confusa, com frases longas e repetidas, que é difícil para qualquer um entender como ele foi feito.
- O Problema: O código que gera o log é sujo, difícil de manter e cheio de erros de programação.
As Consequências: O Que Acontece se Ignorarmos?
Se você deixar esses cheiros ficarem, a casa pode:
- Vazar Segredos: O diário pode conter senhas ou dados de clientes expostos.
- Confundir o Tempo: O diário pode dizer que o evento A aconteceu antes do B, quando na verdade foi o contrário.
- Deixar a Casa Lenta: O excesso de anotações consome a energia da bateria do celular ou o processador do servidor.
- Causar Acidentes: O código de anotação pode interferir no funcionamento do software, causando travamentos.
Ferramentas para Limpar o Cheiro
Os autores também procuraram por "aspiradores de pó" (ferramentas automáticas) que consertam esses problemas.
- O que acharam: Existem 16 ferramentas que ajudam a corrigir alguns desses cheiros, especialmente os relacionados a níveis de alerta e mensagens.
- O que falta: Ainda não há ferramentas automáticas boas para consertar a "Tempestade de Formatos", os "Guardas Dormindo" ou o "Esqueleto no Armário". Isso significa que os desenvolvedores ainda precisam fazer muito trabalho manual nessas áreas.
Conclusão
O estudo nos ensina que escrever bons logs não é apenas "anotar coisas". É uma habilidade que requer cuidado. Se os desenvolvedores aprenderem a identificar esses "cheiros" cedo, eles podem evitar grandes desastres no futuro. É como checar a fumaça antes que a casa pegue fogo: um pequeno esforço agora evita um grande problema depois.