在我们的 Adobe 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_";
在构造函数中还是这样的锁没用?