Где я должен хранить повторно используемые статические строковые константы в приложении Flex? - PullRequest
2 голосов
/ 10 июня 2009

У меня есть два приложения Cairngorm MVC Flex (полная версия и облегченная версия одного и того же приложения), которые совместно используют много классов. Я поместил эти классы в проект библиотеки Flex, который компилируется как SWC. Оба приложения используют некоторые статические строковые константы. Прямо сейчас я храню их в 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)
    ...

1 Ответ

13 голосов
/ 10 июня 2009

Я бы сказал, упорядочить константы по логическому значению, а не по одному классу констант.

Скажем, у вас есть 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. *.).

Вы можете поместить все это в один пакет для констант, или у вас могут быть классы констант, живущие в том же пакете, что и классы, которые их используют.

...