多くの場合、プログラマーは他のコードを生成するコードを記述します。
(専門用語はメタプログラミングですが、単なるクロスコンパイラよりも一般的です。HTMLを生成するすべてのPHP WebページまたはすべてのXSLTファイルについて考えてください。)
私が難しいと思う領域の1つは、手書きのソースファイルとコンピューターで生成されたオブジェクトファイルの両方がデバッグを支援するために明確にインデントされていることを確認する手法を考え出すことです。2つの目標はしばしば競合しているように見えます。
これは、PHP/HTMLの組み合わせでは特に難しいと思います。私はそれが理由だと思います:
- ソースファイルには、生成するPHPよりも多くのHTMLコードが含まれている場合があります
- HTMLファイルは、たとえばSQLステートメントよりも長くなる傾向があり、より適切なインデントが必要です。
- HTMLにはスペースに依存する機能があります(タグ間など)
- 結果はSQLステートメントよりも公に見えるHTMLであるため、合理的な仕事をするためのプレッシャーが大きくなります。
これに対処するためにどのようなテクニックを使用していますか?
編集:私は、きれいなHTMLコードを生成することを気にしないために少なくとも3つの引数があることを受け入れます:
- コード生成の複雑さが増します。
- ブラウザによるレンダリングに違いはありません。開発者はFirebugなどを使用して見事に表示できます。
- パフォーマンスへの軽微な影響-空白文字のダウンロード時間が長くなりました。
私は確かに、インデント(特にSQL)を考慮せずにコードを生成することがあります。
ただし、反対の方向に進むいくつかの議論があります。
- 実際には、生成されたコードを頻繁に読み取ることがあります。それにアクセスするための追加の手順があると不便です。
- HTMLには、スペースに敏感な問題がいくつかあり、ときどき噛み付きます。
たとえば、次のコードについて考えてみます。
<div class="foo">
<?php
$fooHeader();
$fooBody();
$fooFooter();
?>
</div>
次のコードよりも明確です。
<div class="foo"><?php
$fooHeader();
$fooBody();
$fooFooter();
?></div>
ただし、HTMLに空白が含まれているため、レンダリングも異なります。