Где следует хранить повторно используемые статические строковые константы в приложении Flex?

StackOverflow https://stackoverflow.com/questions/976579

Вопрос

У меня есть два приложения 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)
    ...
Это было полезно?

Решение

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

Допустим, у вас есть 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.*).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top