Pregunta

Tengo un cuadro combinado que, cuando se selecciona, muestra texto en 3 cuadros de texto.

Los elementos del cuadro combinado son los 50 estados, y los cuadros de texto muestran información sobre los estatutos estatales. En este momento estoy usando una matriz multidimensional para contener los datos para cada estado (cada elemento en la matriz contiene el estado, el elemento 1, el elemento 2, el elemento 3).

Mi pregunta es: ¿sería mejor o más compacto crear un tipo de datos de estado que contenga los 3 elementos y, en realidad, si este es un enfoque efectivo? No me gusta la matriz, es todo lo que sé hacer en este momento.

En su mayor parte, los 3 tipos de datos se usan repetidamente.

Por ejemplo, uno de ellos es la zona horaria que usa el estado, por lo que solo hay 6 opciones posibles.

No tengo el código frente a mí o lo publicaría, solo algo en lo que estaba pensando.

¿Fue útil?

Solución

La pregunta que debe hacerse sobre una matriz multidimensional es: "¿Puede otro programador mirarla y comprender lo que está pasando?"

¿Es más compacto? Quizás Mayby no. Todo depende del código. En verdad, a menos que esté lidiando con requisitos de memoria muy bajos, probablemente no importa. Piénselo de esta manera, digamos que cada zona horaria ocupa cuatro bytes (tamaño de un entero). Tener entrada para cada zona horaria significa que ha usado lo que 50 x 4 = 200 bytes. No es suficiente para preocuparse de ninguna manera.

Lo cambiaría, porque en 6 meses probablemente tendrá dificultades para comprender lo que hace. La legibilidad y la mantenibilidad son rey en casi todas las situaciones.

Entonces, tal vez un ejemplo es:

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..
}

Otros consejos

Vaya por el tipo personalizado, es más limpio (puede acceder a las propiedades por nombre), menos errores (es más difícil confundir los nombres que los índices) y mantenerse (las propiedades no están "ordenadas", no hay innecesario length Eso debe adaptarse al recuento de propiedades, y si desea propiedades de diferentes tipos, tiene seguridad de tipo).

El código fuente sería útil para mí de comprender qué está haciendo exactamente.

Si el rendimiento puro es un objetivo, sugeriría una matriz de dimensión única con una estructura que contiene la información para cada estado.

Esto aceleraría el acceso a los elementos y facilitaría el seguimiento de qué variable tiene qué valor (variables con nombre en lugar de índices de matriz). Es importante recordar que una estructura es un tipo de valor, por lo que si la pasa a otra función, la función obtendrá una copia de la estructura y no el original. Este no es un problema si trabaja directamente con la matriz, pero será un problema si usa la lista o necesita pasar la información de estado seleccionada a otro método.

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