Pregunta

tengo dos aplicaciones Cairngorm MVC Flex (una versión completa y versión lite de la misma aplicación) que comparten muchas clases. He puesto estas clases en un proyecto de biblioteca Flex que compila como un SWC. Ambas aplicaciones utilizan algunas constantes de cadena estáticos. En este momento, estoy almacenamiento de estos en el 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";

        ...
    }
}

Esto simplemente no parece ser el mejor lugar para almacenar estas constantes, sobre todo ahora que son utilizados por las aplicaciones, y tengo la configuración de cada aplicación para tener su propia clase ModelLocator. Además, este no es el propósito de la clase ModelLocator.

¿Cuál sería una buena manera de almacenar estas constantes en mi biblioteca compartida?

¿Debo crear una clase 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";
    }
}

y luego hacer referencia a ella como esto:

if (value == Constant.SUCCESS)
    ...
¿Fue útil?

Solución

Yo diría que organizar las constantes de significado lógico, en lugar de una sola clase de constantes.

Supongamos que tiene el 3 mostrar como una especie de estado de la tarea, y que haya algunos más que se utilizan como códigos de error para el acceso a archivos (solo inventando cosas aquí):

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

Me parece esto hace más fácil para documentar lo que los valores esperados son por algo. En lugar de decir "devuelve o éxito, el fracaso, correr, ...", que sólo puede decir "devuelve uno de los TaskState. * Valores).

Se puede poner todo esto en un solo paquete para las constantes, ya que podría tener las clases constantes viven en el mismo paquete que las clases que los utilizan.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top