gpt4 book ai didi

php - 代码生成缩进

转载 作者:可可西里 更新时间:2023-11-01 13:39:45 27 4
gpt4 key购买 nike

通常,程序员编写的代码会生成其他代码。

(技术术语是 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 中包含的空白,它也有不同的呈现方式。

最佳答案

在更一般的情况下,我编写了生成 C++ 数据库接口(interface)代码的 XSLT 代码。虽然起初我尝试从 XSLT 输出正确缩进的代码,但这很快就变得站不住脚了。我的解决方案是完全忽略 XSLT 输出中的格式设置,然后通过 GNU indent 运行生成的非常长的代码行。 .这产生了一个适合调试的合理格式化的 C++ 源文件。

我可以想象,在处理 HTML 和 PHP 等组合源时,问题会变得更加棘手。

关于php - 代码生成缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com