使用标签与CFSCRIPT有明显的性能或可读性好处吗?

时间:2012-03-13 18:25:08

标签: coldfusion coldfusion-9 coldfusion-8 coldfusion-7

我正在使用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标签?

2 个答案:

答案 0 :(得分:4)

当向CF团队提出这个问题时,它表示使用cfscript的差异可以忽略不计,但是它太小了,没有人会担心它。这就是编写cfscript函数的方式(在标记中),因此与额外函数调用相关的成本很小。如果您发现任何类型的负载或速度测试存在差异,我会感到惊讶。

快速编辑:您在上面示例中使用的内容没有任何区别,我所做的陈述只是针对CF9中新的cfscript语言增强功能。

答案 1 :(得分: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标签都带有大写字母和属性的人一起工作。他们声明的原因是它有助于提高可读性。当它全部上限时,我发现它不容易或更难阅读。如果有什么我觉得在弄乱那些特定项目的代码时,总是按住移位工具包或点击大写锁定是一件麻烦事。