在根据功能和性能指定参数/属性值时,是和否等于是和否?

Dav*_*vid 5 coldfusion

使用yes | no vs. true | false是否存在任何已知的功能或性能差异?ColdFusion文档声明布尔类型属性的值使用yes/no指定.例如,<cfargument required ="yes | no"....>我使用了true和false来代替yes | no并且没有看到任何意外的功能.

[编辑]我很欣赏这些回复,也许在这种情况下我想的更为一般.

ColdFusion文档声明某些参数的预期值为"yes | no",例如所需cfargument.是否有任何见解为什么yes | no被记录为唯一的预期值,而不是true | false或说明'任何布尔值'是预期的?似乎有点模棱两可,不指示任何布尔类型,而不是只有状态'是|否'如果A)我们要假设'任何布尔'B)存在实际的性能差异.思考?

Sha*_*dio 9

ColdFusion同等地评估是/否,真/假,1(或任何非零数字)/ 0.这样可以轻松地制作快捷方式布尔值,<cfif myquery.recordcount>无论<cfif len(FORM.myVar)>是否必须将整数转换为true/false.

  • 不只是正整数,而且任何非零数字都将被视为"真". (6认同)

Mik*_*ser 6

"yes/no" 键入的字符少了几个.

"true/false" (和true/false)更符合其他编程语言.

就性能而言,就CF而言,它们都是字符串.直到你尝试在条件逻辑中使用它们,它们才会神奇地变成其他数据类型,比如java.lang.Boolean.字符串和布尔值之间的转换又很快.这是CF大多数时间所做的事情.你很难找到任何可靠的测试证明一个比另一个更快.

对于代码可维护性/可读性,最好坚持使用其中一个.

一些传统的CF标签功能特别需要"是/否".他们根本不会使用"真/假".我相信CF9 +不再是这种情况了.

不要依赖ColdFusion文档是准确的还是最新的.几乎所有列出"是/否"作为默认值/允许值的方法实际上都支持任何类型的布尔值."是/否","真/假",真/假,1/0等

恕我直言,对于布尔人使用"是/否"是疯了.从旧的CF5时代向后兼容.很糟糕,Adobe仍然使用它来输出java布尔值.

例如.writeDump( var: (not true) );给你"不".但是,我想要false?!哎呀.

您可以通过调用告诉您当前变量的java类myVar.getClass().getName().您可以使用它来观察CF将您的数据从Boolean转换为String并再次返回到Boolean,就像魔术一样.