0

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

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

 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();
    }
}
4

2 回答 2

3

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

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

  2. ActionScript 通常不是人们学习的第一种编程语言,而且人们在主要使用 ActionScript 时仍然必须使用其他语言。人们期望在类级别上看到常量,而不是在功能级别上。因此,对于大多数人来说,在函数中看到一个常量是很困惑的。

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

于 2013-08-02T18:06:33.410 回答
1

不,这绝对没有错。

只要值永远不会改变,您就应该使用它。CONST我听说,这使您的代码更易于维护,甚至可以节省一点内存。

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

因此,如果您要创建一个永远不会改变并且只能在一个函数中使用的变量,您可以const MAX_VALUE在函数中声明。

于 2013-08-02T17:47:39.020 回答