Actionscript 3中的只写访问器:糟糕的实践?

时间:2009-12-22 06:20:15

标签: oop actionscript-3

我刚看到一些代码,他们有一个隐含的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));
    }
}

这对我来说闻起来很糟糕。哈克。你觉得怎么样?

编辑:也许我的写作问题是,在我的经验中,属性通常是读/写,除非变量名称明显地显而易见,否则可能会令人困惑的是为什么属性是只写的。 / p>

2 个答案:

答案 0 :(得分:4)

通常,OO设计中的仅设置属性没有任何问题。如果无法在构造函数中注入,则可以使用setter来实现依赖项注入。 Setters可以帮助您打破依赖周期。我会更进一步说,在其他环境中也只有set-only属性没有任何问题,但我知道这是一个有争议的问题。

在这种情况下,正如斯特凡所说,它确实应该被称为eatFood

答案 1 :(得分:2)

帮助您构建类的一个指导原则与您是否正在讨论由对象执行的动词/动作或描述它们的特征有关。通常通过方法最好地描述动作,而特性最好由属性描述。这段代码的问题不在于它使用的是set only属性,如上所述,它是完全有效的,但是它使用了一个应该使用方法的属性。