将应用程序范围的DSN值传递给组件的最佳做法是什么?是这样的吗?
component datasource="#application.dsn#"
我一直认为在组件中使用应用程序范围的变量不是一个好习惯。这会更好吗?
component{
function init( dsn, arg1, arg2 ){
this.datasource = arguments.dsn;
}
}
答案 0 :(得分:6)
最佳做法是使组件完全隔离,不要了解外部世界(包括组件外部的任何变量,例如应用程序范围)。您应该通过参数传递组件需要满足其预期目的的任何数据。因此,基于该前提,您的第二个代码示例是首选方法。
答案 1 :(得分:0)
@cfvonner已经详细回复,我相信是正确的答案。 ColdFusion大多数时候允许你按照自己的意愿做事,使用DSN作为会话,应用程序,请求,硬编码。但这种灵活性不应成为编写糟糕代码的借口。当问题本身为“良好实践”而努力时,除了@Adam Cameron提出的观点之外,你的第二段代码也是正确的。简而言之,OOPs ---> ENCAPSULATION --->传递参数