此
<cfif len(x)>
或者
<cfif x NEQ "">
哪一个更有效率和可读性?函数调用vs比较空字符串?
答案 0 :(得分:8)
我和斯科特在一起:
<cfif len(trim(x))>
当您将数据库元素分配给变量,具有“Null”值或单个空格时,它将只传递长度测试,修剪修复它。
我只使用它,如果我在我自己的代码中,并且我肯定我的变量已被声明。然而,我常常在国外遇到另一个程序员问题,所以我的测试看起来像:
<cfif isdefined('x') AND len(trim(x)) gt 0>
至于可读性,它不是最漂亮的,但它是最彻底的。
答案 1 :(得分:4)
就个人而言,我通常使用:
len( trim( x ) )
答案 2 :(得分:4)
我用:
if(len("String"));
我认为代码更清晰,因为他们喜欢说“富有表现力”。使用这种语法你所说的代码就是“如果这个字符串有一个长度”这样做,你的代码相反的是“说明字符串的长度是否为空字符串”。
我还使用ColdFusions松散布尔值来解决很多问题:
if(a + b){
...
}
答案 3 :(得分:2)
Ryan在钱上并且理所当然地接受了答案。
我在这种情况下的考虑是,积极表达的表达方式稍微容易得到一个人的大脑而不是负面的大脑,所以就清晰度而言:使用len()
优于与...的负面比较空字符串。
同样从你的实用角度来看,你很可能想知道你是否有一个长度的字符串,而不是字符串碰巧不是一个空字符串(如果你看到轻微的语义差异),所以len()
方法将更符合您的实际要求。
至于做一个trim()
:除非它来自用户输入并且删除空白填充很重要,否则我不会这样做。我坚信“垃圾进,垃圾出”。它也是第二次猜测数据的意图,我非常不喜欢那些不仅仅是正确地说出来的代码,而不是更多,也不是更少。
这里绝对没有关于性能的现实考虑因素,所以不要担心这类事情,而是关注什么使得最可读的代码能够完成手头的工作。
答案 4 :(得分:0)
从我记忆中来看,len(x)或者更确切地说len(trim(x))比x neq更快“”