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