以前は、HTMLでクラスとIDの属性を定義するために常にアンダースコアを使用してきました。ここ数年、私はダッシュに切り替えました。ほとんどがコミュニティのトレンドに合わせるためでした。必ずしも自分にとって意味があるからではありませんでした。
ダッシュにはもっと欠点があるといつも思っていましたが、利点はわかりませんでした。
コード補完と編集
ほとんどのエディターはダッシュを単語の区切り文字として扱うため、必要な記号にタブで移動できません。クラスが「featured-product
」であるとすると、「」をオートコンプリートしfeatured
、ハイフンを入力して「product
」を完成させる必要があります。
下線付きの " featured_product
"は1つの単語として扱われるため、1つのステップで埋めることができます。
ドキュメント内を移動する場合も同様です。単語でジャンプしたり、クラス名をダブルクリックしたりすると、ハイフンで区切られます。
(より一般的には、クラスとIDをトークンと見なすため、トークンをハイフンで簡単に分割できるようにしても意味がありません。)
算術演算子のあいまいさ
ダッシュを使用すると、JavaScriptのフォーム要素へのオブジェクトプロパティアクセスが無効になります。これはアンダースコアでのみ可能です:
form.first_name.value='Stormageddon';
(確かに私はこの方法でフォーム要素にアクセスしませんが、ダッシュとアンダースコアを普遍的な規則として決定するときは、誰かがそうする可能性があることを考慮してください。)
Sass(特にCompassフレームワーク全体)のような言語は、変数名であっても、標準としてダッシュを使用しています。最初はアンダースコアも使用していました。これが別の方法で解析されるという事実は、奇妙な印象を受けます。
$list-item-10
$list-item - 10
言語間の変数の命名との不一致
昔underscored_names
は、PHP、Ruby、HTML / CSS、JavaScriptで変数を記述していたものです。これは便利で一貫性がありましたが、ここでも「適合する」ために次のように使用します。
dash-case
HTML / CSScamelCase
JavaScriptでunderscore_case
PHPとRuby
これはあまり気になりませんが、なぜこれらが一見故意にずれてしまったのかと思います。少なくともアンダースコアを使用すると、一貫性を維持することができました。
var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
違いにより、文字列を不必要に翻訳しなければならない状況と、バグの可能性が生じます。
だから私は尋ねます:なぜコミュニティはほぼ普遍的にダッシュに落ち着きました、そしてアンダースコアを上回る理由がありますか?
これが始まった頃から関連する質問がありますが、私はそれが単なる趣味の問題ではない(またはそうであるべきではなかった)と考えています。それが本当に趣味の問題だったのなら、なぜ私たち全員がこの条約を決めたのかを理解したいと思います。