コンテンツを簡単に表示および非表示にするための標準はありますか?
質問
- コメントまたはコードのスラブを切り替えて、コンテンツをすばやく表示または非表示にしますか
- 使用する一般的な方法は何ですか?
- 受け入れられている標準はありますか?
- いくつかの方法は避けるべきですか?つまり、一部のエンジンによって誤って解釈される可能性がありますか?
- これに対する代替またはより良い解決策はありますか?
標準-これは、ほとんどの言語(CSS、JavaScript、PHP、ActionScript)をカバーするために使用するものです
/**/ visible /**/
/**\/ hidden /**/
HTML
<!----> visible <!---->
<!----/> hidden <!---->
if(0){ hidden }
if(1){ visible }
if(!$HIDE){ content } // $HIDE defined elsewhere, visible if undefined
解決
レンダリングするものをプログラムで制御できる場合、それが最善であると思います(PHPで行ったように)。書いたもの(本質的にはローカルプリプロセッサマクロ)よりも優れたソリューションは、実際にレンダリングコードをドキュメントのサブ部分を生成する関数に分割することです。必要ない場合は呼び出さず、コードに明確な条件があります。これは、たとえばMediaWikiの記述方法です。そうでなければ、複雑なプロジェクトでは混乱になります。
コメントをコードにハードコーディングすることには多くのリスクがあります。その中:
-
コメント解除を非常に簡単に台無しにする
-
コメントの内容が明確ではありません。
-
コメントアウトされたセクションが重複する場合の問題
-
エラーの切り取りと貼り付け
-
非表示にしたいものはすべてアクセス可能で、検索エンジンなどに影響します。
他のヒント
/*
Commented
// */
//*
Not commented
// */
C ++のセクションをコメントアウトする適切な方法は、どうやらプリプロセッサをもう使用しないので、 if
ステートメントを使用することだと一部の人々から言われました。
if(false)
{
chunk of code;
}
理論は、コンパイラが最終製品からそのデッドコードを最適化するというものであり、ネストすることができますが、 / * * /
スタイルのコメントではできません。
もちろん、その理論を使用してコードの任意の領域をコメントアウトすることはできないため、偽りです:
class Foo
{
void Bar();
if(false)
{
int Baz(double); // WRONG!!!
}
};
一方、これは、ブロック内のステートメントを許可し、標準のプリプロセッサまたはブロックコメントを持たないpythonのような言語に対して完全に機能します。
編集中のソーステキストの構造を理解するテキストエディタを使用することを好みます( Vim および Emacs は由緒あるお気に入りです)、そしてエディターによって解析された構造に基づいてコードの折りたたみを行うことができます。
Vimフォールディングまたは Emacsフォールディングは、このニーズを満たします。