gpt4 book ai didi

coldfusion - 处理可选参数 : CFArgument versus isDefined

转载 作者:行者123 更新时间:2023-12-03 13:17:43 24 4
gpt4 key购买 nike

我有一个关于cfargument 的问题。如果我在调用 .cfc 时发送参数,首先将其定义为参数有什么好处吗?

<cffunction name="someFunction" ....>
<cfargument name="myArg" required="no">

或者我可以只在函数内部使用 IsDefined(),而不定义参数吗?

<cffunction name="someFunction" ....>
...
<cfif isDefined("arguments.myArg")>
do something
</cfif>

我试过它们,知道它们都有效。但是,定义参数和使用 isDefined() 有什么区别?这会影响效率吗?

最佳答案

这与效率无关,与文档有关。以下是我公司关于 cfargument 的编码标准文档的摘录。

在 ColdFusion 函数中使用 CFARGUMENT 标签时,需要以下属性:

  • 姓名
  • 类型
  • 必需
  • 提示

ColdFusion 不要求您使用 cfargument 标签,但它们提供验证(类型安全)并充当附加文档,因此始终为每个命名参数提供一个 cfargument 标签您的功能需要。

规则:

  1. 参数的名称不必以数据类型为前缀(避免使用匈牙利表示法)。
  2. 始终在您的 cfargument 标签中指定 type 属性。尽量避免使用 type="any"
  3. 如果需要参数,请指定 required="true" 但不要指定 default 属性值。
  4. 如果不需要参数,请指定 required="false" 并指定 default 属性值。
  5. 如果您需要检测是否提供了非必需的参数,请不要指定 default,而是在函数中使用 structKeyExists(arguments,"ARGNAME")正文(请记住,当您指定 default 时,您无法区分省略该参数的调用者与提供相同默认值作为参数的调用者之间的区别)。
  6. 当引用作为参数传递给函数的变量时,始终引用参数范围。 (不要引用 foo,引用 arguments.foo。)
  7. 不要操纵传递给函数的参数值。 CF 通过引用 传递一些变量数据类型,并且在函数内完成的任何操作都会在调用它的级别更改变量的值。使用 duplicate() 将参数结构复制到函数局部变量以避免冲突,然后根据需要操作函数局部变量。
  8. 不要将键添加到最初未传递给函数的参数结构中。添加新 key 会使调试变得非常困难。相反,使用复制将参数结构复制到新的函数局部变量以避免冲突并向该结构添加新键。

HTH

关于coldfusion - 处理可选参数 : CFArgument versus isDefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40383028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com