在函数中声明的常量,最佳实践?

时间:2013-08-02 16:16:23

标签: actionscript-3 function constants

如果该常量仅与该函数的运行相关,那么在函数内声明常量是否存在任何内在错误?

作为一个简单的例子,而不是这样做:

 private const PROGRESS_BAR_MAX_VALUE:Number = 110;

 private function checkProgress():void
 {
     if(progress >= PROGRESS_BAR_MAX_VALUE)
        {
            do.something();
        }
    }

我会这样写:

private function checkProgress():void
{
    const MAX_VALUE:Number = 110;

    if(progress >= MAX_VALUE)
    {
        do.something();
    }
}

2 个答案:

答案 0 :(得分:3)

不在函数内声明常量的两个原因:

  1. 通常常量是有意义的。即使你认为它不会在函数之外使用,你可能也错了。请记住文本控件中的那些愚蠢的mx_internal填充,这对于精确的文本测量和布局是绝对必要的。 在实践中将私人常数改为公共是很常见的。如果您需要针对相同责任区域的其他实现,则可能会使用相同的常量。如果某个类以某种方式使用此值,则外部类通常需要它来预测其行为。在您的情况下,此值可能会变为函数参数,在这种情况下,它应声明为具有默认值的参数,而不是常量。

  2. ActionScript通常不是人们学习的第一种编程语言,人们在使用ActionScript时仍然必须使用其他语言。人们期望在课堂上保持不变,而不是在功能水平上。因此,对于大多数人来说,在函数内部看到一个常量是很困惑的。

  3. 此外,请确保您的值确实是一个常数。如果是标签的某些文字,如果必须添加本地化怎么办?如果它是一些延迟选项,如果他们需要从配置文件中读取它怎么办?您的“进度条最大值”看起来不像是一个常量的主题。

答案 1 :(得分:1)

没有绝对没有错。

只要值永远不会改变, 就会<{1}}。这让你的代码更容易维护,甚至可以节省一些内存,我听说过。

如果函数只在该函数的范围内使用,则应在函数中声明一个变量。

因此,如果您要创建一个永不改变且仅应在一个函数中使用的变量,则可以在函数中声明CONST