gpt4 book ai didi

actionscript-3 - AS3 中的隐式与显式 getter/setter,使用哪个以及为什么?

转载 作者:行者123 更新时间:2023-12-03 18:16:55 27 4
gpt4 key购买 nike

自从 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!";

我觉得前者更好地反射(reflect)了代码中实际发生的情况。
我正在调用函数,而不是直接设置值。

安装 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 方式,开始使用隐式技术,并为我的私有(private)变量拥抱那些臭小 _underscores?或者支持我以我的方式做事的理由?

最佳答案

老实说,我认为这很像缩进或大括号样式 - 将您的样式与您正在使用的任何代码库相匹配的重要性/有用性使任何一种方法的任何“固有”优势都黯然失色。尽管如此,您更愿意在物理引擎中维护其中的哪一个?

// with getters
body.position.y += body.velocity.y * dt;

// without
body.getPosition().setY( body.getPosition().getY() + body.getVelocity.getY() * dt );

getter/setter 的另一个优点是,您始终可以在最初将属性设置为简单的公共(public)变量,然后在需要时将它们重构为 getter/setter,而无需更改外部代码。您不必为每个变量预先构建访问器;您可以等到您决定需要它们。

关于actionscript-3 - AS3 中的隐式与显式 getter/setter,使用哪个以及为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2893973/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com