Jam*_*mes 4 coding-style actionscript-3 getter-setter
自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;
}
Run Code Online (Sandbox Code Playgroud)
并且避免像这样工作:
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;
}
Run Code Online (Sandbox Code Playgroud)
我已经避免部分使用AS3的隐式getter/setter,这样我就可以开始输入"get ..",内容辅助将为我提供所有getter的列表,同样也适用于我的setter.我也不喜欢我的代码中的下划线,这让我摆脱了隐含的路径.
另一个原因是我更喜欢这种感觉:
whateverObject.setLoggy( "loggy's awesome new value!" );
Run Code Online (Sandbox Code Playgroud)
对此:
whateverObject.loggy = "loggy's awesome new value!";
Run Code Online (Sandbox Code Playgroud)
我觉得前者更好地反映了代码中实际发生的事情.我正在调用函数,而不是直接设置值.
安装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;
}
Run Code Online (Sandbox Code Playgroud)
我认为这些SourceMate人员必须知道他们在做什么,或者他们不会在AS3中编写用于编码的工作流增强插件,所以现在我在质疑我的方式.
所以我的问题是:任何人都可以给我一个很好的理由,为什么我应该放弃我明确的g/s方式,开始使用隐式技术,并为我的私人变量接受那些臭的小_underscores?还是以我的方式支持我做事的原因?
fen*_*mas 19
说实话,我认为这很像缩进或支撑风格 - 将您的风格与您正在使用的任何代码库相匹配的重要性/乐于助人的任何"固有"优势都会超越任何一种方法.尽管如此,你更愿意在物理引擎中维护哪一个?
// with getters
body.position.y += body.velocity.y * dt;
// without
body.getPosition().setY( body.getPosition().getY() + body.getVelocity.getY() * dt );
Run Code Online (Sandbox Code Playgroud)
getter/setter的另一个优点是,您最初可以创建属性简单的公共变量,并在以后根据需要将它们重构为getter/setter,而无需更改外部代码.您不必为每个变量预先构建访问器; 你可以等到你决定需要它们.
| 归档时间: |
|
| 查看次数: |
6376 次 |
| 最近记录: |