Domanda

Ho due applicazioni Cairngorm MVC Flex (una versione completa e versione lite della stessa applicazione) che condividono molte classi. Ho messo queste classi in un progetto Flex biblioteca che raccoglie come uno SWC. Entrambe le applicazioni utilizzano alcune costanti String statici. In questo momento, sto memorizzazione di queste nella 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";

        ...
    }
}

Questa proprio non sembrare come il posto migliore per conservare queste costanti, soprattutto ora che vengono utilizzati da entrambe le applicazioni, e non ho messa a punto ogni applicazione di avere una propria classe ModelLocator. Inoltre questo non è lo scopo della Classe ModelLocator.

Quale sarebbe un buon modo per memorizzare queste costanti nella mia libreria condivisa?

Devo solo creare una classe come questa:?

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

        public static const FAILURE:String = "failure";

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

e quindi fare riferimento in questo modo:

if (value == Constant.SUCCESS)
    ...
È stato utile?

Soluzione

Direi che organizzano le costanti di significato logico, invece di una singola classe Costanti.

Diciamo che avete il 3 si mostra come una sorta di stato compito, e avete ancora un po 'che vengono utilizzati come codici di errore per l'accesso ai file (solo facendo roba qui):

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

Trovo che questo rende più facile per documentare quali sono i valori attesi sono per qualcosa. Invece di dire "restituisce SUCCESSO, GUASTO, RUNNING, ...", si può solo dire "restituisce uno dei TaskState. * Valori).

Si potrebbe mettere tutto questo in un unico pacchetto per le costanti, o si potrebbe avere le classi costanti vivono nello stesso pacchetto come le classi che ne fanno uso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top