len (x) лучше или x NEQ "" лучше в CFML? - PullRequest
6 голосов
/ 28 июля 2011

Это

<cfif len(x)>

Или

<cfif x NEQ "">

Какой из них более эффективен и удобочитаем? Вызов функции против сравнения пустой строки?

Ответы [ 5 ]

8 голосов
/ 29 июля 2011

Я со Скоттом на этом:

<cfif len(trim(x))>

Когда вы присваиваете элемент базы данных переменной, которая имеет значение «Null» или один пробел, она пройдет только тест длины, обрезка исправит это.

Я использую только это, если я в своем собственном коде, и я уверен, что мои переменные были объявлены. Однако часто я за границей из-за другой проблемы программистов, поэтому мой тест будет выглядеть так:

<cfif isdefined('x') AND len(trim(x)) gt 0>

Что касается читабельности, она не самая красивая, но самая полная.

4 голосов
/ 28 июля 2011

Я использую:

 if(len("String"));

Я думаю, что код намного чище и, как они любят говорить, «выразителен». С этим синтаксисом то, что вы говорите с кодом: «если длина этой строки», то делайте это там, где с помощью обратного кода «говорите, если длина строки - пустая строка, сделайте это».

Я также использую свободные логические значения ColdFusions для многих вещей, таких как дополнительно:

  if(a + b){
   ...
   }
4 голосов
/ 28 июля 2011

Лично я обычно использую:

len( trim( x ) )
2 голосов
/ 20 августа 2013

Райан на деньги и по праву имеет принятый ответ.

В таких ситуациях, которые я имею в виду, я считаю, что положительно выраженные выражения немного легче обрести мозг, чем отрицательные, настолько, насколькоясность гласит: использование len() лучше, чем отрицательное сравнение с пустой строкой.

Также с прагматической точки зрения вы, скорее всего, захотите узнать, есть ли у вас строка с длиной, а неСтрока оказывается не пустой строкой (если вы видите небольшое семантическое различие), поэтому подход len() будет более точно соответствовать вашим фактическим требованиям.

Что касается выполнения trim(): если оно не наступитиз пользовательского ввода, и это важно, что пробелы удаляются, я бы не стал этого делать.Я твердо верю в «мусор, мусор из».Это также второе предположение о намерениях данных, и мне очень не нравится код, который не просто делает точно то, о чем он говорит, не больше и не меньше.

В реальной жизни нет абсолютно никаких соображений, касающихсяпроизводительность здесь, так что не беспокойтесь о таких вещах, вместо этого сосредоточьтесь на том, что делает код наиболее читаемым, который выполняет работу под рукой.

0 голосов
/ 02 августа 2011

Из того, что я помню, len (x) или, вернее, len (trim (x)) быстрее, чем x neq ""

...