Dans le passé, j'ai toujours utilisé le caractère de soulignement pour la définition de la classe et id attributs HTML. Au cours de la dernière quelques années, j'ai changé de tirets, surtout pour aligner moi-même avec la tendance dans la communauté, pas nécessairement parce qu'il fait sens pour moi.
J'ai toujours pensé que les tirets ont plus d'inconvénients, et je ne vois pas les avantages:
La complétion de Code et d'Édition
La plupart des éditeurs de traiter des tirets comme des séparateurs de mots, donc je ne peux pas l'onglet à travers le symbole de la je veux. Dire que la classe est "featured-product
", j'ai pour l'auto-complétion "featured
", entrer un trait d'union, et complète "product
".
Avec des traits de soulignement "featured_product
" est traité comme un seul mot, donc il peut être rempli en une seule étape.
La même chose s'applique à la navigation dans le document. Saut en mots ou en double-cliquant sur les noms de classe est cassé par des traits d'union.
(Plus généralement, je pense que de classes et les id comme des jetons, donc ça n'a pas de sens pour moi qu'un jeton doit être si facilement splittable sur des traits d'union.)
L'ambiguïté avec les opérateurs arithmétiques
En utilisant des tirets pauses objet de la propriété de l'accès à des éléments de formulaire en JavaScript. Cela n'est possible que par des caractères de soulignement:
form.first_name.value='Stormageddon';
(Il est vrai que je n'ai pas accès à des éléments de formulaire, de cette façon, moi-même, mais au moment de décider sur des tirets vs traits de soulignement comme une règle universelle, considère que quelqu'un pourrait.)
Les langues, comme le Sass (en particulier tout au long de la Boussole cadre) se sont installés sur des tirets comme une norme, même pour les noms de variables. Ils ont utilisé le caractère de soulignement au début aussi. Le fait que ceci est analysé différemment, me paraît bizarre:
$list-item-10
$list-item - 10
Incompatibilité avec l'appellation variable à travers les langues
Retour dans la journée, j'ai utilisé pour écrire underscored_names
pour les variables en PHP, ruby, HTML/CSS, et JavaScript. Cela a été facile et uniforme, mais encore une fois, afin de "tenir dans" je vais maintenant utiliser:
-
dash-case
en HTML/CSS -
camelCase
en JavaScript -
underscore_case
en PHP et ruby
Ce ne sont pas vraiment me dérange pas trop, mais je me demande pourquoi c'est devenu tellement mal alignées, apparemment sur la fin. Au moins avec des traits de soulignement, il a été possible de maintenir la cohérence:
var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
Les différences de créer des situations où nous devons traduire les chaînes inutilement, ainsi que le potentiel pour les bugs.
Alors je vous le demande: Pourquoi la communauté presque universellement s'installer sur des tirets, et il y a toutes les raisons qui l'emportent sur les traits de soulignement?
Il y a une question connexe de l'arrière à travers le temps, cela a commencé, mais je suis de l'avis qu'il n'est pas (ou ne devrait pas l' avoir été) juste une question de goût. J'aimerais comprendre pourquoi nous sommes tous installés sur la présente convention si elle était vraiment juste une question de goût.