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

2024-01-02

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

to this:

whateverObject.loggy = "loggy's awesome new value!";

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

安装 Flash Builder 和出色的新插件后源友 http://www.elementriver.com/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 方式,开始使用隐式技术,并为我的私有变量拥抱那些臭烘烘的小_下划线?或者支持我这样做的理由?


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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AS3 中的隐式与显式 getter/setter,使用哪个以及为什么? 的相关文章

  • PSR-2 编码标准:为什么仅包含 PHP 的文件中没有 PHP 结束标记? [复制]

    这个问题在这里已经有答案了 我刚刚听说PSR 2编码标准 http www php fig org psr psr 2 在对此问题的评论中 是否有任何理由在方法和成员变量名称之前使用 public 关键字 https stackoverfl
  • 在数组/对象中查找项目的最快方法

    在 Javascript AS3 中查找列表或对象中项目的索引的最快方法是什么 我对这两种语言都提出这个要求 因为这两种语言的语法相似 假设 myArray one two three myObject one 1 two 2 three
  • 推动 AS3 向前发展?

    您好 我在工作中经常使用 AS3 但我接受过 Java C C 教育 发现该语言的限制性很大 AS3 世界似乎有两个基本阵营 非技术创意阵营 他们希望让事情顺利进行 而不需要太多麻烦 而计算机科学强加给他们 对使用 Flex 感兴趣并习惯于
  • 在 Objective C 中使用下划线作为属性名称前缀 [重复]

    这个问题在这里已经有答案了 我以前避免在变量名中使用下划线 这可能是我大学 Java 时代的遗留下来的 因此 当我在 Objective C 中定义属性时 我自然会这样做 In the header interface Whatever N
  • 使用 Flex 3 从 SWF 创建 EXE,而不需要 AIR?

    我有一个用 Flex 3 MXML 和一些 AS3 编写的简单的小测试应用程序 我可以将其编译为 SWF 但我想将其制作为 EXE 这样我就可以将它提供给我的几个同事 他们可能会发现它有用 使用 Flash 8 我可以只针对 EXE 而不是
  • AS3 内存泄漏示例

    有人可以发布一个 as3 代码的示例 特别是包括事件侦听器 这将是一个可能泄漏内存的简单示例 也希望您能发布所显示问题的解决方案吗 问题是 AS3 事件监听器中内存泄漏的一个简单示例是什么 如何解决它 public class MySpri
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • 创建对象的弱引用

    Actionscript 3 中是否可以创建对对象的弱引用 以便可以对其进行垃圾收集 我正在创建一些类以使调试更容易 因此如果仅在此处引用这些对象 我不希望这些对象挂在内存中 当然我不想用回调填充代码以删除对象 格兰特 斯金纳 Grant
  • 在 Flex 中以 HTTP Post 方式上传任意数据

    我们目前有一个 Java 小程序 可以生成大量数据并将其上传到我们的服务器 我们拥有的上传方法之一是使用 HTTP POST 到我们的服务器 其内容只是原始数据 没有多部分编码或任何内容 我正在考虑实现一个具有相同功能的 Flex 应用程序
  • ReferenceError:错误#1069:属性 box_mc_0

    我试图使用循环隐藏舞台上的影片剪辑 但在发布它时出现以下错误 这只是这个概念的一个示例 var q for q 0 q lt 3 q stage box mc q visible false 错误消息 参考错误 错误 1069 财产box
  • 如何更改 AlertDialog 中列表项的文本颜色

    您好 我正在尝试更改列表中项目的文本颜色ListPreference弹出窗口 我花了一个多小时查看所有各种样式名称 但找不到TextAppearance或任何与此特定文本相关的内容 感谢您的帮助 你不能也不应该 Preference使用来自
  • AS3如何在角色死亡动画结束时转到MainTimeline中的下一帧

    所以我需要知道我的角色 鸟 是否用管道 hitTestObject 在动画结束后播放骰子动画 它需要在主时间轴中转到游戏结束帧 if bird hitTestObject pipe1 bird gotoAndStop 3 frame 3 w
  • Flash AS3 EventDispatcher - 有什么方法可以获取已注册侦听器的列表吗?

    有没有什么方法可以获取注册监听器的列表EventDispatcher 我知道EventDispatcher有hasEventListener方法告诉您是否注册了任何侦听器 但是有没有一种简单的方法来询问EventDispatcher找出听众
  • Flex PopUpManager:如何检测模式弹出窗口的存在?

    我的 Flex 3 应用程序有一些通过 PopUpManager 显示的模式对话框 但有时我希望其他视图组件知道有弹出窗口显示 PopUpManager 没有任何方法来实际检查弹出窗口是否存在 有没有其他方法可以在 flash flex 中
  • 如何在没有接口的情况下模拟多重继承?

    如何在不使用接口的情况下在 C 中模拟多重继承 我确实相信 接口能力不适用于此任务 我正在寻找更多面向 设计模式 的方式 就像 Marcus 所说 使用接口 扩展方法来制作像 mixins 这样的东西可能是你目前最好的选择 另请参阅 使用接
  • _ 和 self 之间的区别。在 Objective-C 中

    使用下划线和使用selfObjective C 中调用时的关键字 property 财产申报 property weak nonatomic NSString myString Calling synthesize关于物业 synthesi
  • 在 ActionScript 中刷新数据网格时保持选择

    我正在使用 flashbuilder 开发我的第一个 AIR 应用程序 只是让您知道 我已经绑定了一个mx DataGrid组件到一个DataProvider这是一个mx HTTPService获取包含项目的 xml 文件 为了使数据保持最
  • 超过两个点的Python相对导入

    是否可以使用路径中包含两个以上点的模块引用 就像这个例子一样 Project structure sound init py codecs init py echo init py nix init py way1 py way2 py w
  • 最好的 Flash 音频/视频 + 交互服务器?

    我正在寻找有关 Flash 实时服务器的建议 目前 我们使用 Moock 的组合Unity http www moock org unity and Red5 http osflash org red5 但有几个问题 首先 我们正在转向 A
  • Flex 中的全局变量

    我正在尝试在 Flex 中使用全局变量 但它似乎无法正常工作 在我的默认 mxml 文件中 我声明以下内容 public var appID int 该变量跟踪我的应用程序中用于 SQL 目的的会话 ID 在另一个 mxml 页面上 我调用

随机推荐