Dans le passé, j'ai toujours utilisé des traits de soulignement pour définir les attributs de classe et d' ID en HTML. Au cours des dernières années, je suis passé aux tirets, principalement pour m'aligner sur la tendance de la communauté , pas nécessairement parce que cela avait du sens pour moi.
J'ai toujours pensé que les tirets avaient plus d'inconvénients, et je ne vois pas les avantages:
Achèvement et édition du code
La plupart des éditeurs traitent les tirets comme des séparateurs de mots, je ne peux donc pas accéder au symbole souhaité. Dites que la classe est " featured-product
", je dois compléter automatiquement " featured
", saisir un trait d'union et compléter " product
".
Avec des traits de soulignement " featured_product
" est traité comme un seul mot, il peut donc être rempli en une seule étape.
Il en va de même pour la navigation dans le document. Sauter par des mots ou double-cliquer sur les noms de classe est interrompu par des tirets.
(Plus généralement, je considère les classes et les identifiants comme des jetons , donc cela n'a pas de sens pour moi qu'un jeton devrait être si facilement divisible en traits d'union.)
Ambiguïté avec l'opérateur arithmétique
L'utilisation de tirets interrompt l' accès à la propriété de l'objet aux éléments de formulaire en JavaScript. Cela n'est possible qu'avec des soulignements:
form.first_name.value='Stormageddon';
(Certes, je n'accède pas aux éléments de formulaire de cette façon moi-même, mais lorsque vous décidez des tirets par rapport aux traits de soulignement en tant que règle universelle, considérez que quelqu'un pourrait le faire.)
Des langages comme Sass (en particulier dans le cadre de Compass ) se sont installés sur les tirets en standard, même pour les noms de variables. À l'origine, ils ont également utilisé des traits de soulignement. Le fait que cela soit analysé différemment me semble étrange:
$list-item-10
$list-item - 10
Incohérence avec la dénomination des variables dans toutes les langues
À l'époque, j'écrivais underscored_names
des variables en PHP, rubis, HTML / CSS et JavaScript. C'était pratique et cohérent, mais encore une fois afin de "s'adapter", j'utilise maintenant:
dash-case
en HTML / CSScamelCase
en JavaScriptunderscore_case
en PHP et rubis
Cela ne me dérange pas vraiment trop, mais je me demande pourquoi ceux-ci sont devenus si mal alignés, apparemment exprès. Au moins avec des soulignements, il a été possible de maintenir la cohérence:
var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
Les différences créent des situations où nous devons traduire des chaînes inutilement, ainsi que le potentiel de bugs.
Je pose donc la question: pourquoi la communauté s'est-elle presque universellement contentée de tirets, et y a-t-il des raisons qui l'emportent sur les soulignements?
Il y a une question connexe à l'époque où cela a commencé, mais je suis d'avis que ce n'est pas (ou n'aurait pas dû être) une question de goût. J'aimerais comprendre pourquoi nous nous sommes tous installés sur cette convention si ce n'était vraiment qu'une question de goût.