Pourquoi sont des tirets préféré pour les sélecteurs CSS / attributs HTML?

Dans le passé, j'ai toujours utilisé le caractère de soulignement pour définir 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 les 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:

De complétion de Code & É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 jetons, donc ça n'a pas de sens pour moi qu'un jeton doit être si facilement splittable sur des traits d'union.)

Ambiguïté avec les opérateurs arithmétiques

En utilisant des tirets pauses objet de propriété 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.)

Langues comme 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

Incohérence 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 des 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 un une question relative à la à partir 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 ont é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.

  • J'ai utiliser les tirets parce que je n'ai pas de frapper la touche maj enfoncée.
  • Des traits de soulignement sont moches et en plus ils exigent la touche maj enfoncée.
  • Curieux de savoir pourquoi cela a été fermé... étaient là les votes pour le fermer? Je ne suis pas solliciter des opinions dans cette question. J'ai donné des raisons spécifiques à l'encontre de l'aide de tirets, mais il faut de bonnes raisons pour eux si tout le monde apparemment d'accord sur cette tendance. Il y a quelques bonnes réponses et bonnes infos ici. Puis-je améliorer la question?
  • Je suis candidatures ma question pour la réouverture: toutes les réponses ci-dessous incluent "des faits, des références, ou une expertise spécifique"... donc je ne vois pas comment il n'était pas "constructif".
  • Je pense que la fermeture de ce fil que non constructif était une décision stupide. Si il ya un style de codage qui est préféré en raison de quelque chose d'autre que la préférence (plus facile pour les IDEs de traiter avec, plus facile de complétion de code, une meilleure intégration avec les outils), je pense qu'il serait constructif de questions/réponses/débat.
  • Phooey! C'est encore une grande question! Très instructif.
  • c'est une très bonne question, bien formaté, instructif et met en avant les multiples aspects. +1 pour l'. Btw., Je suis d'accord qu'il était absurde de fermer ce sujet comme "non constructif". En fait c'EST constructif.
  • Je suis vraiment contre le fermer comme non-constructive, ne fait pas de sens de le faire. Il y a une petite mais importante différence entre demander "Pourquoi préférez-vous XX" et "Pourquoi XX préféré". Le premier demande un avis, la deuxième est de comprendre pourquoi cette convention est donc acceptable, même si il ont XX inconvénients
  • Qu'attendez-vous de Bill le Lézard? Bêtement la clôture de cette question était juste un de son pouvoir de voyages - voir ceci.
  • double possible de au nom de "classe" et "id" attributs HTML - tirets vs souligne
  • Dès 2015, Bootstrap 4 utilise camelCase pour id et les tirets pour les noms de classe.
  • "Le saut en mots ou en double-cliquant sur les noms de classe est cassé par des traits d'union." > au moins le double-cllicking question ne peut être exclue dans les éditeurs comme sublime (en modifiant les paramètres)

InformationsquelleAutor Andrew Vit | 2011-09-26