问题描述
|
我(我认为)非常擅长构造应用程序类和程序包,但是最近我一直在权衡一些建议,我可以在以下方面使用一些建议:
仅包含静态常量的类,如下所示:
package //?
{
public class Elements
{
public static const FIRE:String = \"fire\";
public static const WATER:String = \"water\";
}
}
显然在以下情况下使用了哪些:
var myElement:String = Elements.FIRE;
我一直将这些类放在包含其他类的软件包中,这些类可以充分利用它们。例如,该类可能位于game.mobiles
中,因为此程序包包含用于充分利用Elements
的移动设备类(播放器,敌人等);它们具有可能是基本的抵抗力和伤害。
不过,这对我来说似乎很奇怪,因为Elements
实际上与移动电话无关(因为它不是移动电话,或者从技术上讲甚至与移动电话都没有关系)。
我开始怀疑我是否应该将所有上述类放入通用包(如game.statics
)中,尽管从某些角度来看这似乎也很混乱。
对于这些小类,我应该怎么做才能使结构尽可能整洁易懂?
解决方法
我认为您现有的方法是正确的,因为它是最合逻辑的。通常,您看不到(在通用体系结构中)仅包含静态/常量变量的类。通常,您会看到它们捆绑在一个类中,该类存在最能利用这些静态特性的功能。例如,AS3中的任何事件类。您会看到静态常量MouseEvent.MOUSE_DOWN等与实际事件类(MouseEvent)捆绑在一起。我认为将它们分成一个纯粹存在的用于存储静态数据的包将不太合逻辑,尽管这不一定是错误的。无论如何,如果您要遵循已建立的示例,我将以AS3语言本身为例,在该示例中,我们可以看到Flash核心团队似乎将类组装到具有最高关联级别的包中。我认为您对此可能会产生疑问,因为您拥有的类纯粹是由常量组成的,而没有将类明确地耦合或链接到其他任何对象的功能或继承。
, 我想如果我有很多与特定任务相关的常量,但是可能不只一个类需要(例如,游戏中重力的值),我会将它们放在这样的定义类中。我不喜欢简单地引用常量值(耦合太多)的函数类。