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中的只写访问器:糟糕的实践?的主要内容,如果未能解决你的问题,请参考以下文章
ActionScript 3 AS3:处理ie7中的预加载器