Question

J'ai une boîte combinée qui, lorsqu'elle est sélectionnée, affiche du texte dans 3 zones de texte.

Les éléments de la boîte combo sont les 50 états et les zones de texte affichent des informations sur les statuts d'état. À l'heure actuelle, j'utilise un tableau multidimensionnel pour maintenir les données pour chaque état (chaque élément du tableau contient l'état, élément 1, élément 2, élément 3).

Ma question est: serait-il mieux ou plus compact de créer un type de données d'état qui contient les 3 éléments, et en fait, s'il s'agit même d'une approche efficace? Je n'aime pas le tableau, c'est juste tout ce que je sais faire maintenant.

Pour la plupart, les 3 types de données sont utilisés à plusieurs reprises.

Par exemple, l'un d'eux est le fuseau horaire utilisé par l'état, il n'y a donc que 6 options possibles.

Je n'ai pas le code devant moi ou je le posterais, juste quelque chose auquel je pensais.

Était-ce utile?

La solution

La question que vous devez vous poser sur un tableau multidimensionnel est: "Un autre programmeur peut-il le regarder et comprendre ce qui se passe?"

Est-il plus compact? Peut-être que non. Tout dépend du code. En vérité, à moins que vous n'ayez affaire à des exigences de mémoire très faibles, cela n'a probablement pas d'importance. Pensez-y de cette façon, disons que chaque fuseau horaire prend quatre octets (taille d'un entier). Avoir l'entrée pour chaque fuseau horaire signifie que vous avez utilisé ce que 50 x 4 = 200 octets. Pas assez pour s'inquiéter de toute façon.

Je le changerais, car dans 6 mois, vous aurez probablement du mal à comprendre ce qu'il fait. La lisibilité et la maintenabilité sont roies dans presque toutes les situations.

Alors peut-être qu'un exemple est:

class State
{
    public State (string stateId, int timeZoneOffset)
    {
       StateId = stateId;
       TimeZoneOffSet = timeZoneOffset;
    }

    public String StateId {get;set;}
    public int TimeZoneOffest {get;set;}
}

public class StatesAndTerritories
{
    List<State> _states = new List<State>
    public StatesAndTerritories ()
    {
      //_state.Add state information here

      _state.Add(new State("AZ", -6); ......

    }

    public IEnumerable<State> GetStates (){
     return _state;
    }

   public IEnumerable<State> GetStatesInZimeZone(int timezone)
    {}

    etc..
}

Autres conseils

Optez pour le type personnalisé, il est plus propre (vous pouvez accéder aux propriétés par leur nom), moins d'erreur sujette (il est plus difficile de confondre les noms que les indices) et maintenable (les propriétés ne sont pas "triées", il n'y a pas de besoin length Cela doit s'adapter au nombre de propriétés, et si vous voulez des propriétés de différents types, vous avez la sécurité de type).

Le code source serait utile pour moi de comprendre ce que vous faites exactement.

Si les performances pures sont un objectif, je suggérerais un réseau de dimension unique avec une structure détenant les informations pour chaque état.

Cela accélérerait l'accès aux éléments et faciliterait le suivi de la variable de la valeur (variables nommées au lieu d'index de tableau). Il est important de se rappeler qu'une structure est un type de valeur, donc si vous le transmettez à une autre fonction, la fonction obtiendra une copie de la structure et non de l'original. Ce n'est pas un problème si vous travaillez directement avec le tableau, mais que vous serez un problème si vous utilisez la liste ou si vous devez transmettre les informations d'état sélectionnées à une autre méthode.

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