【问题标题】:Constants declared in a function, Best practices?函数中声明的常量,最佳实践?
【发布时间】:2013-08-02 16:16:23
【问题描述】:

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

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

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

【问题讨论】:

  • 很公平。我之所以这么问,是因为我从来没有考虑过这样做,直到我发现 Scaleform 遇到函数中声明的常量时会引发运行时错误。

标签: actionscript-3 function constants


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    不,这绝对没有错。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多