本着我关于"常见的编程错误......避免"的其他问题的精神
ColdFusion程序员要避免哪些常见的编程错误?
设置
上传路径到Web可访问,启用CF的目录!
isStruct()
之前isObject()
在一系列
的期望中,isStruct只捕获struct(cfc组件也从isStruct()返回True)
否HtmlEditFormat()
显示用户生成的内容(XSS)
忘了在CFC方法上添加output = false
不在
里面使用
没有在方法中确定诸如cfquery name或loop index之类的不那么明显的变量
使用
时,他们需要的是纯香草HTML
忘了UrlEncodedFormat()
用户定义的URL
在
不消毒内容的情况下使用
信任isDate()
太多(任何数字都会返回true)
期望字符串比较区分大小写(IS和EQ运算符不区分大小写)
发送字符串"yes"或"no" SerializeJSON()
而不附加空格来保留字符串(否则SerializeJSON()
或DeserializeJSON()
将它们翻译为"true"和"false")
不将单身人士服务放在应用范围内
盲目地创造尽可能多的CFC,就像在JAVA中那样
将复杂的值/对象放入列表中(不能,列表只是一串逗号分隔的值)
编写将数组作为参数并修改该数组的函数,期望该数组将被修改(CFML中的数组按值传递)
盲目地改变access="remote"
方法并期望它工作(当远程代理通常更合适时)
当CFML更合适时,在cfscript中使用大量的WriteOutput()
盲目使用的IsDefined()
时候StructKeyExists()
一般可以更有效地做到
盲目地使用Iif()
并且De()
不知道它们像Evaluate()那样令人讨厌
更新onApplicationStart()中的一些代码,而不是看到刷新的差异(重新启动应用程序!)
或''在
导致打开多个新查询连接之外.99%的情况下,在一个cfquery中执行多个语句以执行多个操作或一起使用UNION数据会更好.
硬编码绝对路径时ExpandPath()
通常更好
忘了在DSN中启用Unicode支持(Unicode变为'????')
不升级到最新的JRE和修补程序
滥用客户端范围并炸毁Windows注册表...
使用折旧/过时的功能/功能(即flash形式又名flex 1.x alpha,cftable,Verity全文搜索等......)
传递CFCATCH
给函数作为参数类型Struct
(CFCATCH
行为类似于a Struct
,但事实并非如此.只需将其作为类型' Any
' 传递).
没有从ColdBox wiki 阅读CFC最佳实践.
以.ASP(X)或.JSP或[插入网络技术]的思维方式购买总是更好..;)
不使用PrecisionEvaluate()
并获得所有类型的浮点舍入误差,尤其是在计算金钱时.