Есть ли ощутимые преимущества в производительности или удобочитаемости при использовании тегов по сравнению с CFSCRIPT? - PullRequest
1 голос
/ 13 марта 2012

Я использую ColdFusion 8 и 9.

Вчера я читал некоторые лучшие практики ColdFusion. Я наткнулся на раздел, который советовал всегда использовать CFSCRIPT, когда это возможно. Причиной было то, что каждый CFSET является отдельным запросом и должен быть открыт и закрыт сервером (или что-то в этом роде). Поскольку CFSCRIPT обрабатывается как единый блок кода, необходимо только одно открытие и закрытие, что потребует меньше времени для процесса сервера. Этот совет был дан явно для ColdFusion 5.

Мне интересно, верен ли этот совет сегодня, почти десятилетие спустя. Лично я использую CFSCRIPT 99% времени. Однако я работаю с людьми, которые используют только теги. В проекте, над которым я работаю, я встретил этот код в функции:

<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 ]

4 голосов
/ 13 марта 2012

Когда это было задано команде CF, было заявлено, что разница в использовании cfscript незначительна, но она настолько мала, что никто не должен беспокоиться об этом.Это происходит так, как были написаны функции cfscript (в тегах), так что с дополнительным вызовом функции связана небольшая стоимость.Если вы заметите разницу в нагрузочном или скоростном тесте, я буду удивлен.

Быстрое редактирование: то, что вы используете в приведенном выше примере, не будет никакой разницы, заявление, которое я делаю, касается только новых улучшений языка cfscript в CF9.

3 голосов
/ 13 марта 2012

Нет реальной разницы в скорости, о которой можно говорить в современных версиях языка.Что касается читабельности, то это совершенно субъективно тому, кто читает.Я работаю с широким кругом людей 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 были написаны заглавными буквами вместе с атрибутами.Их заявленная причина в том, что это помогает в удобочитаемости.Я не нахожу это легче или труднее читать, когда он во всех заглавных буквах.Во всяком случае, мне кажется, что всегда сложно удерживать сменный комплект или нажимать на заглавные буквы, когда возиться с кодом в этих конкретных проектах.

...