CSSはそのような複数行コメントのみをサポートすることを理解しています
/* foobar */
単一行コメントのサポートがないのはなぜですか。
// foobar
それらはプログラミングでも同じように一般的であり、CSSのような各ルールが独自の行にある言語の場合に特に役立つようです。
この決定に特定の歴史的理由がなかった場合、ブラウザがそれをサポートすることを妨げているのは何ですか?
CSSはそのような複数行コメントのみをサポートすることを理解しています
/* foobar */
単一行コメントのサポートがないのはなぜですか。
// foobar
それらはプログラミングでも同じように一般的であり、CSSのような各ルールが独自の行にある言語の場合に特に役立つようです。
この決定に特定の歴史的理由がなかった場合、ブラウザがそれをサポートすることを妨げているのは何ですか?
回答:
下位互換性
CSS構文に単一行コメントを導入すると、現在tokenを使用しているファイルの意味が変わる可能性があります//
。ブラウザベンダーは、既存のページを破壊する可能性のある変更を導入することに非常に消極的です。
CSSは、非常に正確な「エラー耐性」解析ルールで定義されています。これは、構文的に違法なものを書いたとしても、解析の進め方に関する正確なルールがあることを意味します。//
宣言内で不正な文字シーケンス(など)が検出された場合、現在の宣言は破棄され、次のセミコロンまでスキップされます。
CSSはこのように設計されており、古いブラウザを壊さずに新しい構文を導入できます。古いブラウザは、サポートされていない構文を含む宣言をスキップし、その後続行します。
ただし、このロジックは、「ユニット」が処理またはスキップされると宣言することを前提としています。単一行のコメントが導入された場合、解析//
されるルールと解析されるルールを変更する次のセミコロンまでではなく、次の改行までスキップすることを意味します。これにより、既存のCSSファイルの意味が驚くほど変化する可能性があります。
例:
P { font: 12px//16px; }
... hundreds of additional lines of CSS...
ここで、誤ってスラッシュを2倍にしました。その結果、フォント宣言は無視されますが、残りはすべて正常に機能します。//
-commentsのサポートが導入された場合、突然閉じ括弧がコメントアウトされ、スタイルシートの残りの部分がすべて壊れる可能性があります。
間違いを犯したのは自分自身のせいだと言えるかもしれませんが、インターネット上の不明な数のページが不明瞭な理由で壊れたり、不自然にレンダリングされたりする可能性があることは変わりません。
後方互換性を損なうこのような変更は非常に慎重に検討する必要があります。また、単一行のコメントはおそらく、リスクに対して十分なほど魅力的ではありません。
したがって、CSSに単一行のコメントが必要な場合は、おそらく最初から導入されているはずです。しかし、CSSは非常に単純な言語として始まり、2つの異なるコメント構文を持つことは、当時は不必要な複雑さであると考えられていたでしょう。(ANSI Cにも単一行のコメントはありませんでした。)
//
、2つの「デリムトークン」に解析され、順番に文法のどこでも許可されていません。詳細については、w3.org / TR / css-syntax-3 /#tokenizationを参照してください。
/**/
が、変更されていない理由にも対応しているため、これを受け入れます。
さらに別の構文要素をサポートするのは簡単ではありません。まだ追加のコメントスタイルを処理できるツールがたくさんあります。実際、ほとんどのトークナイザー/パーサーは、単に改行を無視するだけで、おそらくそれらを改行に置き換えても驚くことではありません;
。
それが言語にとって不可欠である場合、すなわち開発者の生活をはるかに楽にする場合、これを行うことができます。たとえば、CSSにコメントの種類がないことは気に入らないでしょうし、コメントを区切る特定の構文要素を追加する価値があるでしょう。//
一方、スタイルのコメント?...私はポイントが表示されません。参照/* Hello, World! */
:1行のコメント。
実際、//
C ++または同様の言語で慣れているため、おそらくスタイルスタイルのコメントを期待します。ただし、CSSはC ++から継承しないため、同様の構文機能を期待するのはかなり奇妙です。
同様に、Pythonプログラマは、CSSにも#
-styleコメントが必要だと主張します。だから今、両方のスタイルをサポートする必要がありますか?そして、Haskellの世界から男が含まれるように頼む--
と{- -}
同様に、あなたはもはやCSSコードを認識しませんなぜあなたは自分自身を頼みますよ。
わずかな利点は//
、1行のコメントの最後にさらに3文字入力する必要がないことです(実際、文字のカウントを開始する場合、CSSはPythonスタイルのコメントを使用する必要があります)。ただし、適切なテキストエディタを使用している場合は、とにかくショートカットを押すだけでテキストをコメント/コメント解除できます。
[...]は、各ルールが独自の行にあるCSSのような言語にとって特に便利なようです。
私が説明したように、それらは、テキストエディタの小さなサブセットを使用するプログラマの小さなサブセットにとって、ほんの少しだけ有用です。独自の行にある各ルールについてのあなたの発言について(ところで、私はあなたの発言に同意しません)、別のポイントについて考えさせられました:コメントが実際にどのように使用されるか。
私が考えることができるCSSコメントの使用法は次のとおりです。
最初の3つのケースでは、とにかく複数行スタイルのコメントを使用します。これは、ファイルヘッダーとハックの説明から明らかです(ほとんどのハックには、少なくとも文とStackOverflowへのハイパーリンクまたはブログ記事が必要です)。区切り文字については:
/**
* Footer and sitemap styles.
*/
Cスタイルのコメントは、次のものよりもずっと見やすくなっています。
// Footer and sitemap styles.
テキストに埋もれています。
//
コメントもサポートします。
//
は多くの言語で非常に一般的であり、その背後にある概念は構文以上のものであり、機能も異なると主張します。とはいえ、これはこれまでで最も詳細な答えです。
問題は、コメントのあるほとんどの言語(C#、Javaなど)がコンパイルされた言語であり、コンパイラがコンテンツをコンシューマ(CPU)に提示する前にすべてのコメントを取り除くことです。CSSはコンパイルされません。通常、ファイルは設計者が開発したときに変更されずに送信されるため、コメントを削除する機会はありません。//スタイルのコメントには、構文の正確さを保持するために//シンボルと改行の両方が必要です。
はい、縮小子が存在し、はい、javascriptはこのタイプのコメントを許可します。Javascriptではeval()も許可されているため、モデルとして使用したいとは思わない。
/* */
コメントを持つことができますか?
//
コメントを削除できないのにコメントを削除できないの/* */
でしょうか?