2

我有两个共享许多类的 Cairngorm MVC Flex 应用程序(同一应用程序的完整版和精简版)。我已将这些类放入编译为 SWC 的 Flex 库项目中。这两个应用程序都使用一些静态字符串常量。现在,我将这些存储在 ModelLocator 中:

package model
{
    [Bindable]
    public class ModelLocator
    {
        public static var __instance:ModelLocator = null;

        public static const SUCCESS:String = "success";

        public static const FAILURE:String = "failure";

        public static const RUNNING:String = "running";

        ...
    }
}

这似乎不是存储这些常量的最佳位置,尤其是现在两个应用程序都使用它们,并且我已将每个应用程序设置为拥有自己的 ModelLocator 类。另外,这不是 ModelLocator 类的目的。

将这些常量存储在我的共享库中的好方法是什么?

我应该像这样创建一个类吗?:

package
{
    [Bindable]
    public class Constants
    {
        public static const SUCCESS:String = "success";

        public static const FAILURE:String = "failure";

        public static const RUNNING:String = "running";
    }
}

然后像这样引用它:

if (value == Constant.SUCCESS)
    ...
4

1 回答 1

13

我会说按逻辑含义组织常量,而不是单个常量类。

假设您将 3 显示为某种任务状态,并且您还有一些用作文件访问的错误代码(只是在此处制作内容):

public class TaskStates {
  public static const SUCCESS:String = "success";
  public static const FAILURE:String = "failure";
  public static const RUNNING:String = "running";
}

public class FileErrors  {
  public static const FILE_NOT_FOUND:String = "filenotfound";
  public static const INVALID_FORMAT:String = "invalidformat";
  public static const READ_ONLY:String = "readonly";
}

我发现这可以更容易地记录某些事物的预期值。您可以只说“返回 TaskState.* 值之一),而不是说“返回 SUCCESS、FAILURE、RUNNING……”。

您可以将所有这些放在一个常量包中,或者您可以让常量类与使用它们的类位于同一个包中。

于 2009-06-10T16:12:45.957 回答