通常,程序员编写的代码会生成其他代码。
(技术术语是元编程,但它比单纯的交叉编译器更常见;想想每个生成 HTML 的 PHP 网页或每个 XSLT 文件。)
我发现具有挑战性的一个领域是想出一些技术来确保手写源文件和计算机生成的目标文件都清楚地缩进以帮助调试。这两个目标似乎经常相互竞争。
我发现这在 PHP/HTML 组合中特别具有挑战性。我认为这是因为:
- 有时源文件中的 HTML 代码比生成的 PHP 代码多
- HTML 文件往往比 SQL 语句长,需要更好的缩进
- HTML 具有空间敏感特性(例如标签之间)
- 结果是比 SQL 语句更公开可见的 HTML,因此做合理工作的压力更大。
您使用什么技术来解决这个问题?
编辑:我接受至少有三个论点不费心生成漂亮的 HTML 代码:
- 增加了生成代码的复杂性。
- 与浏览器渲染没有区别;开发人员可以使用 Firebug 或类似工具来很好地查看它。
- 轻微的性能损失 - 增加了空白字符的下载时间。
我当然有时会生成代码而不考虑缩进(尤其是 SQL)。
然而,有一些论据推动了另一种方式:
- 在实践中,我发现我确实经常阅读生成的代码——有额外的步骤来访问它是不方便的。
- HTML 有时会遇到一些空间敏感问题。
例如,考虑以下代码:
<div class="foo">
<?php
$fooHeader();
$fooBody();
$fooFooter();
?>
</div>
它比下面的代码更清楚:
<div class="foo"><?php
$fooHeader();
$fooBody();
$fooFooter();
?></div>
但是,由于 HTML 中包含空格,它也具有不同的呈现方式。