在 AS3 中使用 Final 有什么好处吗?

2024-03-02

我最近尝试养成使用的习惯final任何符合逻辑的关键字,就像任何不应该扩展的类一样。

我这样做纯粹是因为我喜欢保持严格而简洁的编码风格。

除了在为其他方开发应用程序/游戏基础或与他人合作等情况下有明显的优势之外,使用时是否有任何实际好处final?即性能。


根据这个广泛的测试 http://jacksondunstan.com/articles/413, the final关键字不会对性能造成丝毫差异。

The way final在 ActionScript 中使用,这并不奇怪:final 关键字仅标记类和类方法,因此它仅影响继承。我看不出为什么调用最终方法应该比调用任何其他方法更快的逻辑原因:运行时仍然需要查找函数指针并执行调用。
对于Java 中的方法和类 http://www.ibm.com/developerworks/java/library/j-jtp04223/index.html#N100A7。然而,在Java中,final also 将引用标记为不可变 https://stackoverflow.com/questions/4971286/javas-final-vs-cs-const/4971330#4971330。与在 ActionScript 中使用相比,这是一个很大的优势,因为它允许编译器“内联”值(即将字节代码中变量的所有引用替换为其实际值,从而消除查找过程),其中包括其他好处- 可以稍微加快性能。也许我们会在 ActionScript 的未来版本中看到它的一些用途 - 这对于提高代码清晰度和防止副作用来说也是一个好主意。

由于这些原因,我仍然认为使用final,即使您没有与其他程序员一起工作,在某些情况下预期行为需要方法或类禁止覆盖:它澄清意图并防止不良影响。因此,它将加速开发,这也不是一件坏事;)

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

在 AS3 中使用 Final 有什么好处吗? 的相关文章

  • 如何重构“字符串类型”代码?

    我目前正在开发一个代码库 其中有几类变量 例如数据库路径 它们简单地表示为字符串 这些 非 类型的大多数操作都在实用程序类中定义 我创建了一个新类来表示数据库 并将操作定义为实例方法 采用传统的 OOP 风格 然而 浏览大型代码库并重构它以
  • 什么是 PHP 中的呼叫转移和静态呼叫或后期静态绑定? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我从网站上获得了一个代码示例 但我很难理解输出 我正在分享代码 class A public static function foo
  • 什么是依赖注入的 Pythonic 方式?

    介绍 对于 Java 依赖注入作为纯 OOP 工作 即您提供要实现的接口 并在框架代码中接受实现定义的接口的类的实例 现在对于 Python 您可以执行相同的操作 但我认为该方法对于 Python 而言开销太大 那么如何以 Pythonic
  • Delphi 有通用的“对象池”实现吗?

    我在寻找 Delphi 的数据库连接池实现时遇到了这个问题 对象池需要两个方法 get 从池中获取一个对象 如果池为空或者其大小尚未达到最大大小 这将创建一个新实例 此方法必须是线程安全的 以便两个线程不能同时获取一个对象同一时间 如果所有
  • 使用as3在第二帧上添加影片剪辑

    如何使用 AS3 类中调用的 addChild 在特定帧上添加影片剪辑 我的问题是如何访问特定的框架 谢谢 棘手的事情是处理帧 实时循环 我会这样做的方式是 添加事件监听器FRAME CONSTRUCTED http help adobe
  • 名称中带有点的 php 对象属性

    我有 mysql 表 其中包含 操作 日期 操作 名称 等列 将该表数据作为对象获取后 mysqli gt fetch object 我得到这个 行的 print r stdClass Object id gt 2 operation da
  • 检查用户的 Flash 播放器是否具有音频功能。 (功能.hasAudio)

    是否可以检查用户是否有声卡 我找到了 Capability hasAudio 但不知道这是否是我应该查看的值 trace Capabilities hasAudio 指定系统是否具有音频功能 此属性始终true 文档对此并不清楚 但我认为
  • 如何在 Lua 中实现 OO?

    Lua 没有内置对 OO 的支持 但它允许您自己构建它 您能否分享一些实现面向对象的方法 请为每个答案写一个例子 如果您有更多示例 请发布另一个答案 我喜欢将 OOP 视为容器 对象 内的数据封装以及可以使用该数据完成的操作子集 还有很多内
  • ActionScript 3 中的圆形滑块

    我希望在 ActionScript 中添加一个圆形滑块 非常类似于这一页 http interface eyecon ro demos drag vr html shows 它最终会改变对象的色调 返回 CMY 值 但如果它只是吐出程度 我
  • AS3 无法从 Java 发送的套接字解​​码 AMF3 对象

    我有一个 java 套接字服务器 它在连接时将 Animal 对象发送到 Flash 客户端 对象的发送方式如下 Amf3Output amf3Output new Amf3Output SerializationContext getSe
  • Actionscript 3主类是根,但不允许动画虚拟相机

    我最近开始使用 Actionscript 3 学习 Animate CC 我正在尝试使用 Animate 的 虚拟相机 功能 为我提供一个可以平移 旋转和缩放游戏的相机 当根没有子类时 很容易实现 Camera 例如 您可以在屏幕上放置一个
  • 耦合、内聚和迪米特定律

    The 德墨忒耳定律 http en wikipedia org wiki Law of Demeter表示你应该只与你直接了解的对象交谈 也就是说 不要执行方法链接来与其他对象通信 当您这样做时 您正在与中间对象建立不适当的链接 不恰当地
  • 如何使PHP库松耦合? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我应该如何使用 Perl URI 类?

    我需要在 Perl 程序中处理一些 HTTP URL 但我怀疑应该如何处理URI https metacpan org module URI类帮助我 特别是 我想使用URI用于解析相对 URL 并获取其组件的类 然而 问题是 我需要一个可以
  • AS3 是否可以复制 Shape 对象?

    我正在尝试制作一个可用于复制的形状 这是我所做的 我正在尝试做的以及我陷入困境的解释 在 Flash IDE 画笔 中手动绘制形状 创建了一个包含形状的新影片剪辑 作为一个类导出 实例化该类 var mc MovieClip new sha
  • 如何将一个窗格连接到另一个窗格

    如何将输出连接到paneWithList PaneWithList其上有一个监听器JList以便将所选行输出到控制台 我怎样才能将该输出定向到JTextPane关于输出 Could PaneWithList触发一个事件Main拿起 会属性更
  • 为什么json序列化器不符合多态性?

    我在 NET 4 5 Windows 应用商店应用程序中使用库存 JSON 序列化器 System Runtime Serialization Json DataContractJsonSerializer 我有一个由 API 提供商提供的
  • 为什么c++中的构造函数不能声明为静态?

    我最近读完了第一卷 Bruce Eckel 的 Thinking in C 现在转向将这些知识应用到一些实际用途中 我最近正在使用静态成员函数 并尝试将构造函数设为静态 但编译器对此不满意 我查了书上的原因 但没有找到 谁能解释为什么 P
  • 在 init 之外在 java 中创建对象

    因此 对于我正在创建的游戏 我有一些扩展 GameDriver 的类 到目前为止 在所有其他类上我都能够扩展 GameDriver 然后在 GameDriver 中我可以执行以下操作 ArrayList
  • 如何从类外部更改公共 R6 类方法?

    我希望能够在我的 R6 类中重新定义公共方法 以便它根据该类保存的数据类型进行更改 如下所示 library R6 Simple lt R6Class Simple public list dt mtcars my print functi

随机推荐