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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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));
    }
}

这闻起来对我不好。哈克。你怎么看?

编辑:也许我的写作问题是,在我的经验中,属性通常是读/写,除非变量名称或文档记录显而易见,否则可能会混淆为什么属性是只写的。

答案

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

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

另一答案

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

以上是关于Actionscript 3中的只写访问器:糟糕的实践?的主要内容,如果未能解决你的问题,请参考以下文章

django rest框架中的只写,只读字段

在 Swift 4.1 中,如何请求照片库的只写权限?

ActionScript 3 AS3:处理ie7中的预加载器

ActionScript 3 AS3在运行时加载和访问外部SWF中的字体

DataGrid 中的 ActionScript 项呈现器

在 Objective-C 中只写属性