自从 AS3 出现以来,我一直在这样工作:
private var loggy:String;
public function getLoggy ():String
{
return loggy;
}
public function setLoggy ( loggy:String ):void
{
// checking to make sure loggy's new value is kosher etc...
this.loggy = loggy;
}
并避免像这样工作:
private var _loggy:String;
public function get loggy ():String
{
return _loggy;
}
public function set loggy ( loggy:String ):void
{
// checking to make sure loggy's new value is kosher etc...
_loggy = loggy;
}
我已经避免部分使用 AS3 的隐式 getter/setter,这样我就可以开始输入“get..”,内容辅助会给我一个我所有的 getter 的列表,同样对于我的 setter。我也不喜欢代码中的下划线,这使我关闭了隐式路由。
另一个原因是我更喜欢这种感觉:
whateverObject.setLoggy( "loggy's awesome new value!" );
对此:
whateverObject.loggy = "loggy's awesome new value!";
我觉得前者更好地反映了代码中实际发生的情况。我正在调用函数,而不是直接设置值。
在安装 Flash Builder 和出色的新插件SourceMate(它有助于将 FDT 著名的一些有用功能引入 FB)后,我意识到当我使用 SourceMate 的“生成 getter 和 setter”功能时,它会自动使用隐式设置我的代码路线:
private var _loggy:String;
public function get loggy ():String
{
return _loggy;
}
public function set loggy ( loggy:String ):void
{
// do whatever is needed to check to make sure loggy is an acceptable value
_loggy = loggy;
}
我认为这些 SourceMate 人必须知道他们在做什么,否则他们不会编写用于在 AS3 中编码的工作流增强插件,所以现在我在质疑我的方式。
所以我对你的问题是:谁能给我一个很好的理由,为什么我应该放弃我的显式 g/s 方式,开始使用隐式技术,并为我的私有变量拥抱那些臭小 _underscores?或者支持我以我的方式做事的理由?