No passado, sempre usei sublinhados para definir atributos de classe e ID em HTML. Nos últimos anos, mudei para traços, principalmente para me alinhar com a tendência da comunidade , não necessariamente porque fazia sentido para mim.
Eu sempre pensei que traços têm mais desvantagens e não vejo os benefícios:
Conclusão e edição de código
A maioria dos editores trata os traços como separadores de palavras; portanto, não consigo acessar o símbolo que desejo. Digamos que a turma seja " featured-product
", preciso concluir automaticamente " featured
", inserir um hífen e concluir " product
".
Com sublinhados " featured_product
" é tratado como uma palavra, para que possa ser preenchido em uma etapa.
O mesmo se aplica à navegação no documento. Pular com palavras ou clicar duas vezes nos nomes das classes é interrompido por hífens.
(Geralmente, penso em classes e IDs como tokens , por isso não faz sentido para mim que um token seja tão facilmente divisível em hífens.)
Ambiguidade com operador aritmético
O uso de traços interrompe o acesso à propriedade do objeto para formar elementos em JavaScript. Isso só é possível com sublinhados:
form.first_name.value='Stormageddon';
(É certo que eu não acesso aos elementos do formulário dessa maneira, mas, ao decidir sobre traços e sublinhados como regra universal, considere que alguém pode.)
Idiomas como o Sass (especialmente em toda a estrutura do Compass ) definiram traços como padrão, mesmo para nomes de variáveis. Eles originalmente usaram sublinhados no começo também. O fato de isso ser analisado de maneira diferente me parece estranho:
$list-item-10
$list-item - 10
Inconsistência com a nomeação de variáveis entre idiomas
No passado, eu costumava escrever underscored_names
para variáveis em PHP, ruby, HTML / CSS e JavaScript. Isso era conveniente e consistente, mas, novamente, para "encaixar" agora eu uso:
dash-case
em HTML / CSScamelCase
em JavaScriptunderscore_case
em PHP e ruby
Isso realmente não me incomoda muito, mas eu me pergunto por que elas se tornaram tão desalinhadas, aparentemente de propósito. Pelo menos com sublinhados, foi possível manter a consistência:
var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
As diferenças criam situações em que precisamos traduzir seqüências desnecessariamente, juntamente com o potencial de erros.
Por isso, pergunto: Por que a comunidade quase universalmente se contentou com traços e existem razões que superam os sublinhados?
Há uma pergunta relacionada na época em que isso começou, mas sou da opinião de que não é (ou não deveria ter sido) apenas uma questão de gosto. Eu gostaria de entender por que todos concordamos com esta convenção, se realmente era apenas uma questão de gosto.