Pergunta

Eu tenho dois aplicativos Cairngorm MVC Flex (uma versão completa e versão lite do mesmo aplicativo) que compartilham muitas classes. Eu coloquei essas classes em um projeto de biblioteca Flex que compila como um SWC. Ambas as aplicações utilizam algumas constantes static String. Agora, eu sou armazenar estes no 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";

        ...
    }
}

Isso só não parece ser o melhor lugar para armazenar essas constantes, especialmente agora que eles são usados ??por ambas as aplicações, e eu tenho a configuração de cada aplicação para ter sua própria classe ModelLocator. Além disso, este não é o propósito da Classe ModelLocator.

O que seria uma boa maneira de armazenar essas constantes em minha biblioteca compartilhada?

Devo apenas criar uma classe como esta:?

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

        public static const FAILURE:String = "failure";

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

e, em seguida, referenciá-lo como este:

if (value == Constant.SUCCESS)
    ...
Foi útil?

Solução

Eu diria organizar as constantes pelo significado lógico, em vez de uma única classe Constantes.

Digamos que você tenha a 3 você mostrar como uma espécie de estado de tarefa, e você tem mais alguns que são usados ??como códigos de erro para acesso a arquivos (apenas fazendo coisas para cima aqui):

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";
}

Eu acho isso torna mais fácil para documentar o que os valores esperados são para alguma coisa. Em vez de dizer "Retorna um sucesso, FALHA, correr, ...", você pode simplesmente dizer "retorna um dos TaskState. * Valores).

Você poderia colocar tudo isso em um único pacote para constantes, ou você poderia ter as classes constantes viver no mesmo pacote que as classes que os utilizam.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top