1

我正在使用 ColdFusion 8 和 9。

昨天我正在阅读一些 ColdFusion 最佳实践。我遇到了一个建议尽可能始终使用 CFSCRIPT 的部分。原因是每个 CFSET 都是一个单独的请求,需要由服务器打开和关闭(或类似的东西)。由于 CFSCRIPT 是作为单个代码块处理的,因此只需要打开和关闭一次,从而减少服务器进程的时间。此建议是针对 ColdFusion 5 明确给出的。

我想知道这个建议在将近十年后的今天是否成立。就个人而言,我 99% 的时间都在使用 CFSCRIPT。但是,我确实与只使用标签的人一起工作。在我正在进行的一个项目中,我在一个函数中遇到了这段代码:

<cfset LOCAL.TrackingInfo = structnew()>
<cfset LOCAL.TrackingInfo.referral = CGI.HTTP_REFERER>
<cfset LOCAL.TrackingInfo.ipaddress = CGI.REMOTE_ADDR>
<cfset LOCAL.TrackingInfo.useragent = CGI.HTTP_USER_AGENT>
<cfset LOCAL.TrackingInfo.querystring = CGI.QUERY_STRING>

我会修改它看起来像这样:

<cfscript>
    LOCAL.TrackingInfo = structNew();
    LOCAL.TrackingInfo.referral = CGI.HTTP_REFERER;
    LOCAL.TrackingInfo.ipaddress = CGI.REMOTE_ADDR;
    LOCAL.TrackingInfo.useragent = CGI.HTTP_USER_AGENT;
    LOCAL.TrackingInfo.querystring = CGI.QUERY_STRING;
</cfscript>

对我来说,好处是可读性。而且,在 CFSCRIPT 和 JavaScript 和 Java(我做过的小 Java)之间来回切换真的很容易。

使用 CFSCRIPT 是否有明显的可读性或性能优势?非初学者有什么理由继续使用 CF 标签吗?

4

2 回答 2

4

当这被提交给 CF 团队时,据说使用 cfscript 的差异可以忽略不计,但它是如此之小,以至于没有人应该担心它。这是 cfscript 函数的编写方式(在标签中),因此与额外的函数调用相关的成本很小。如果您发现任何类型的负载或速度测试存在差异,我会感到惊讶。

快速编辑:您在上面的示例中使用的东西没有区别,我所做的声明仅与 CF9 中的新 cfscript 语言增强有关。

于 2012-03-13T18:34:03.800 回答
3

在现代版本的语言中没有真正的速度差异。至于可读性,这完全取决于谁在阅读。我与各种各样的 CF 人员一起工作。其中一些人很难遵循 CFSCRIPT,而其他人则是他们曾经尝试使用的所有内容(几乎到了矫枉过正的地步)。就我个人而言,我会说采用您最喜欢的任何方法,并且无论与您一起工作的团队是否可以接受,这也是一种方法。我认为这里的最终目标是生成团队中每个人都可以在需要时轻松理解和支持的代码。可读性参数的一个例子可能是我知道这里有人会说你的 CFSCRIPT 块不像这样可读:

<cfscript>
    LOCAL.TrackingInfo  = { referral = CGI.HTTP_REFERER, 
                            ipaddress = CGI.REMOTE_ADDR, 
                            useragent = CGI.HTTP_USER_AGENT, 
                            querystring = CGI.QUERY_STRING };
</cfscript>

我不认为你们中的任何一个都比另一个“更正确”。只是个人编码风格的差异。

或者另一个例子,我与一个坚持所有 CF 标签和属性都用大写字母一起工作的人一起工作。他们陈述的原因是它有助于提高可读性。当它全部大写时,我没有发现它更容易或更难阅读。如果有的话,我发现在弄乱这些特定项目的代码时,总是按住 shift 套件或按下大写锁定只是一件麻烦事。

于 2012-03-13T18:42:25.777 回答