通过在CF9中编写CFC的新方法,CF9的一些新编码约定是什么?
以下是我能想到的一些......
init()
方法,因为如果找到New
将调用init()。init()
中放置必需的参数,否则会出现异常...... THIS.setXXX
,其中XXX是init()中的属性名称,因此如果可用,它将调用隐式setter或自定义setter。isNull(arguments.optionalArg)
代替isDefined()
答案 0 :(得分:2)
我们还需要为脚本样式CFC中的组件和函数设置属性output = false吗?
我不这么认为。 <cfscript>
本质上禁止任何空格,需要writeOutput()
才能获得任何输出。
答案 1 :(得分:0)
如果使用“new my.cfc()”语法调用它,则init()方法不必返回“this”范围。真实的故事。
如果你在cfc里面想要设置一个属性,不要使用this.setFoo(),只需去setFoo()。 getFoo()也是如此。 this.xxx()就像走出前门只是为了回来。而且,你的access =私人定制的getter和setter不会工作,因为函数不会在这个范围内。
“var foo”vs“local.foo” - 就我个人而言,我更喜欢var'd变量,因为a)输入的代码较少,b)读取的代码较少。
// there isnt a huge difference here
var today = now();
var tomorrow = dateAdd( 'd', 1, today );
local.today = now();
local.tomorrow = dateAdd( 'd', 1, local.today );
// but when you start getting more complex examples, it quickly blows out
var out = method( var1, var2, var3, var4, var5 );
local.out = method( local.var1, local.var2, local.var3, local.var4, local.var5 );
使用javadocs样式注释。文档是你的朋友。
/**
* @hint This is a hint for the whole function
* @arg1 This is an argument hint
* @arg2 This is another argument hint
**/
public void function myFunction( string arg1 = 'default', boolean arg2 ) {
return true;
}
答案 2 :(得分:-1)
所有改变数据的函数都应该返回一些值,即使它是一个当前总是为true的布尔值。函数最终需要返回false