1

在我们的 Adob​​e Coldfusion 项目中,我们有一些组件用作单例,例如:

component name="Util" {
    public function init() {
        variables.settings = loadFromConig();
        variables.prefix = "my_";
        return this;
    }

    public string function getPrefix() {
        return variables.prefix;
    }

    public struct function getSettings() {
        return variables.settings;
    }
}

这应该正常工作,因为必须始终首先执行 init() 函数才能调用任何其他方法。我担心的是:如果 loadFromConig() 函数花费的时间太长并且某些 getter 方法抛出未定义的变量异常,是否有任何风险不会按预期发生(例如在压力测试条件下)?

一般来说,在构造函数中使用变量范围定义一些“常量”是一种好习惯(方法 A),还是使用具有默认值的属性更好(方法 B),或者硬编码“常量”是否更安全' 直接在吸气剂中:

public string function getPrefix() {
   return "my_";
}

(方法 C)?

我我们使用方法 A - 在这些行周围放置一个 cflock 是个好主意:

  variables.settings = loadFromConig();
  variables.prefix = "my_";

在构造函数中还是这样的锁没用?

4

1 回答 1

1

在对这个问题进行了一些重新思考之后,我得出结论,最好将 final 变量用作常量,因为一旦初始化 final 变量,就无法更改它的值。

component{
    final prefix = "my_";         
    function checkPrefix(){
        writeoutput("prefix: " & prefix);
    }
}
于 2021-03-17T09:17:18.807 回答