Situação Problema Tem Hífen
Como resolver o problema de hífens em strings e identificadores
Você já tentou usar um termo como situação-problema como nome de variável, classe ou chave de JSON e viu o compilador ou parser reclamar? Isso acontece com frequência em Python, JavaScript e até em nomes de arquivos no Windows. O hífen é interpretado como operador de subtração em muitas linguagens, o que gera erros silenciosos ou explícitos dependendo do contexto. No meu caso, semanas atrás eu estava migrando um sistema legado que usava situacao_problema como chave em um banco de dados SQLite, e o novo frontend esperava situacao-problema por causa de um contrato de API com parceiro externo. A primeira tentativa foi renomear diretamente no banco, o que funcionou, mas quebrou consultas hardcoded em três módulos diferentes. Eu acabei criando uma camada de mapeamento com aliases, usando dicionário de tradução no DAO, o que evitou tocar no código de negócio.
O que é a situação problema tem hífen
A expressão descreve o conflito entre convenções de nomenclatura natural (onde hífens são comuns em português, inglês e outras línguas) e as restrições sintáticas de linguagens de programação e formatos de dados. Hífen não é permitido em identificadores em Python — você recebe SyntaxError. Em JavaScript, minha-classe tentando definir uma propriedade assim resulta em erro de parse. Em URLs e arquivos, o hífen é permitido e até recomendado por SEO, mas em keys de JSON ou nomes de variáveis ele quebra tudo. Algumas linguagens aceitam, outras não. Go permite hífen em tags de struct, mas não no identificador em si. Rust usa underscore para palavras compostas, mas permite hífen em atributos. PHP é permisivo com variáveis dinâmicas, mas isso é más prática.
Workarounds práticos
O mais comum é substituir o hífen por underscore, que é o padrão snake_case usado em Python, Ruby e C. Esse é o caminho mais seguro e amplamente adotado. O problema é que isso cria atrito com documentação legível e com APIs externas que insistem na versão com hífen. Se você está controlando o backend, pode usar camelCase como compromisso: situacaoProblema. É legível, não quebra sintaxe em quase nenhuma linguagem e evita o underscore excessivo. Frameworks como Django e Rails aceitam isso naturalmente em serializadores. Quando você não pode mudar o nome porque depende de uma API de terceiros, a solução é manter o nome com hífen internamente usando aspas simples ou colchetes em JavaScript: obj["situacao-problema"], e em Python acessar via dict.get() ou getattr() com strings dinâmicas. Isso funciona, mas deixa o código menos limpo.

Outra abordagem é criar uma rotina de normalização que traduz entre as duas formas na fronteira do sistema. Eu implementei um pequeno helper que converte automaticamente entre - e _ durante a leitura e escrita de dados entre o banco e a API. O código fica centralizado, não espalha lógica por toda a base.
Erros comuns e armadilhas
Muitos desenvolvedores tentam usar hífen em nomes de variáveis Python achando que funciona em versões mais novas. Não funciona. Python 3 não relaxou essa regra. Você vai receber SyntaxError: invalid syntax toda vez. Em JSON, keys podem ter hífen sem problema — o formato permite qualquer string entre aspas. O problema surge quando você lê esse JSON em Python e tenta acessar data.situacao-problema como atributo de objeto. Isso vai falhar porque o objeto não tem esse atributo, a menos que você tenha usado um parser que converte para dicionário. Em URLs, o hífen é positivo para SEO e legibilidade. /situacao-problema é melhor que /situacao_problema para humanos lerem. Mas se sua aplicação gere URLs programaticamente e o gerador usa str.replace("_", "-"), certifique-se de que o reverso também ocorre na rota, senão você cria URLs duplicados e problemas de canônica.
Quando não usar hífen de jeito nenhum
Em nomes de pacotes Python. O PyPI e o pip tratam hífens e underscores de forma inconsistente. Um pacote chamado situacao-problema pode ser instalado como situacao_problema, e importar import situacao-problema nunca vai funcionar. A documentação oficial do Python recomenda usar apenas underscore em nomes de módulo. Em nomes de variáveis globais em shell scripts. O Bash trata hífen como subtração, então MINHA_VAR-VALOR=5 é interpretado como MINHA_VAR menos VALOR, atribuindo 5 ao resultado da subtração, o que gera erro ou comportamento inesperado dependendo do contexto.

Resumo rápido para consulta
Identificador em Python: use underscore. JavaScript: underscore ou camelCase. JSON key: hífen é válido, mas acesse via notação de colchete se for acessar como atributo. URL: hífen é bom. Nome de pacote: apenas underscore. Shell script: nada de hífen. Se o seu projeto lida com termos compostos em português, considere adotar uma convenção única no início, documentar em um README ou arquivo de style guide, e aplicar um linter que rejeite violações. Isso evita discussões infinitas em code review sobre qual formato usar. A solução que mais funcionou para mim foi padronizar em camelCase no backend Python com Django Rest Framework, mapeando os campos serializados para a forma com hífen na saída JSON, e mantendo tudo com underscore no código fonte. Assim, a API expõe o que o cliente quer, e o código interno permanece limpo e sem surpresas.
Galeria
-
Situação Problema Tem Hífen - FDPLEARN -
Situação Problema Tem Hífen - FDPLEARN -
MAPA MENTAL SOBRE USO DO HÍFEN - Maps4Study