Question

J'ai deux applications Cairngorm MVC Flex (une version complète et version allégée de la même application) qui partagent de nombreuses classes. J'ai mis ces classes dans un projet de bibliothèque Flex qui compile comme SWC. Les deux applications utilisent des constantes de chaîne statiques. En ce moment, je suis dans le stockage de ces 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";

        ...
    }
}

Cela ne semble pas être le meilleur endroit pour stocker ces constantes, surtout maintenant qu'ils sont utilisés par les applications, et je configurer chaque application d'avoir son propre ModelLocator classe. De plus ce n'est pas le but de la classe ModelLocator.

Quelle serait une bonne façon de stocker ces constantes dans ma bibliothèque partagée?

Dois-je créer simplement une classe comme ceci:

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

        public static const FAILURE:String = "failure";

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

et puis référence comme ceci:

if (value == Constant.SUCCESS)
    ...
Était-ce utile?

La solution

Je dirais que l'organisation des constantes de sens logique, au lieu d'une seule classe Constantes.

Disons que vous avez 3 vous montrer comme une sorte d'état de la tâche, et vous avez un peu plus qui sont utilisés comme codes d'erreur pour l'accès aux fichiers (juste faire des choses ici):

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

Je trouve cela rend plus facile de documenter ce que les valeurs attendues sont pour quelque chose. Au lieu de dire « Retourne l'REUSSI, ECHOUE, RUNNING, ... », vous pouvez simplement dire « Retourne un des TaskState. * Les valeurs).

Vous pouvez mettre tout cela dans un seul paquet pour les constantes, ou vous pourriez avoir des classes constantes vivent dans le même paquet que les classes qui les utilisent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top