【问题标题】:Does it make any real sense to make read-only properties out of "reference types" in an AS3 class?从 AS3 类中的“引用类型”中创建只读属性是否真正有意义?
【发布时间】:2012-11-14 14:03:10
【问题描述】:

取以下代码:

private var m_iQuanitity:int;
public function get quantity():int
{
    return m_iQuantity;
}

这似乎很有道理。您可以毫无问题地从外部课程中看到数量是多少,但您根本无法真正弄乱它。现在获取以下代码:

private var m_acUsers:ArrayCollection = new ArrayCollection();
public function get users():ArrayCollection
{
    return m_acUsers;
}

在这种情况下,您不能真正直接设置变量,但您仍然可以对它进行几乎所有其他事情,而不会出现任何问题。你可以调用它的 AddItem 和 RemoveItemAt 函数,它们可以做很多“设置”变量。

这样做还有意义吗?我知道您可以创建一个重复的 ArrayCollection,然后将副本传回以避免设置它,但是在整个地方做这样的事情,纯粹是为了防御性编程,会浪费大量的 CPU 时间。所以我想我是在问它是否仍然有意义,如何,如果我错过了完全使用 get 和 set 的意义?谢谢!

【问题讨论】:

    标签: actionscript-3 class properties get class-design


    【解决方案1】:

    从句法上讲,您所拥有的内容没有任何问题,但第二个示例确实打破了“获取”的概念,不仅制作了只读属性。如果您需要遵守只读策略,那么您已经打破了它,因为现在您可以操作 ArrayCollection。

    最终归结为您要做什么。您可以更改值对项目是否重要?如果您正在与多人合作的项目,则这种类型的编码将要求您添加评论或让您解释您在做什么。当你做一些超出常规的事情时,这可能会增加混乱,所以最好简化并坚持预期,避免解释一些事情。

    另外,我可以想到一些可能导致问题的方法 - 如果您将返回的属性传递给其他不知道它来自哪里并且在原始类中有内部代码的类,则更改函数外部的值失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多