【问题标题】:Write-only accessors in Actionscript 3: Bad Practice?Actionscript 3 中的只写访问器:不好的做法?
【发布时间】:2010-12-29 00:07:10
【问题描述】:

我刚刚遇到一些代码,它们有一个隐式 setter,但没有 getter,例如:

public class Person {

    //no getter!

    public function set food(value:Food):void {
        // do something with food.
        this.processFood(value);
        this.dispatchEvent(new Event(FoodEvent.EATEN));
    }
}

这对我来说很难闻。哈基。你怎么看?

编辑:也许我对只写的问题是,根据我的经验,属性通常是读/写的,除非变量名很明显或有据可查,否则可能会混淆为什么该属性是只写的。

【问题讨论】:

  • public function eatFood(food:Food):void { ... } 似乎更合适。

标签: oop actionscript-3


【解决方案1】:

一般来说,OO 设计中只设置属性并没有什么问题。当您无法在构造函数中注入时,您可以使用 setter 来实现依赖注入。 Setter 可以帮助你打破依赖循环。我会进一步说,在其他情况下仅设置属性也没有错,但我知道这是一个有争议的问题。

在这种情况下,正如 Stefan 所说,它真的应该被称为eatFood。

【讨论】:

    【解决方案2】:

    帮助您构建类的一个准则与您是在谈论由对象执行的动词/动作还是描述它们的特征有关。动作通常最好用方法来描述,而特性最好用属性来描述。这段代码的问题不在于它使用了一个仅设置的属性,如前所述,这是完全有效的,而是它使用了一个应该使用方法的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      相关资源
      最近更新 更多