Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Extrayendo datos de un diccionario de manera segura

25/35
Recursos

Muchas veces consultar la información no es suficiente y nuestros reportes tienen que extraer información para mostrarla de la mejor manera al usuario o a la persona que hará uso de estos reportes.

Dentro de nuestro reporteador crearemos un método para que nos regrese una lista de evaluaciones. Para ello primero llamaremos al método GetValueOrDefault del diccionario pasándole la llave, en caso de no encontrar un valor nos va a regresar un valor por defecto, este valor por defecto de una lista es null.

Una mejor forma de obtener este valor es mediante el método TryGetValue, este método nos va a retornar un bool dependiendo de si encontró el valor o no, además, le debemos de pasar por parámetros la llave y un parámetro de salida donde va a almacenar el valor en caso de obtenerlo.

Aportes 19

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Como recomendación creo que deberian aclarar los cambios que hacen entre capitulo y capitulo. Y tener un poco mas de continuidad entre cada uno.
En el capitulo anterior se dijo que se crearia un IEnumerable<Evaluacion>
con un nombre de método GetListaEvaluaciones, y este capitulo arranca diciendo que se creará una IEnumerable<Escuela> TENIENDO AUN EL NOMBRE DEL METODO ANTERIOR. Esto se presta a confusiones.

Para todo lo demás el curso va satisfaciendo mis expectativas, sigan asi Platzi!

Buena clase, sin embargo, no sé si te lo habrán dicho pero sería bueno que ordenaras mejor la clase que vayas a dar porque sinceramente en esta en especial me mareé con tantos cambios y tantas vueltas que le dió. x"D

Opino lo mismo que Dresan. Muchas veces tengo que pararme ir dar una vuelta porque este hombre le da muchas vueltas a las cosas y eso te desconcentra entre otras cosas

Esta clase no tuvo ningún sentido. “GetValueOrDafault” devuelve null si no encuentra el valor. Solo has un checheque antes en retornar la list, pero no seguimos dando vueltas para al final retornar null.

Otro dato curioso es que podemos saber si una llave se encuentra en nuestro diccionario, ejemplo :

 if (_diccionario.ContainsKey(LLaveDiccionario.Escuela))
            {
                var ListaEscuelas = diccionario[LLaveDiccionario.Escuela];
            }

deberiamos ir al punto y despues de eso ya ver las cosas que pueden pasar.

Extrayendo datos de un diccionario de manera segura

Muchas veces consultar la información no es suficiente y nuestros reportes tienen que extraer información para mostrarla de la mejor manera al usuario o a la persona que hará uso de estos reportes.

Una mejor forma de obtener este valor es mediante el método TryGetValue, este método nos va a retornar un bool dependiendo de si encontró el valor o no, además, le debemos de pasar por parámetros la llave y un parámetro de salida donde va a almacenar el valor en caso de obtenerlo.

Como han mencionado algunos, en esta clase en particular se sintió el desorden en las ideas, “esto si, ahora no, mejor esto, no esto tampoco”. Se entiende que el desarrollo es así, hay que probar que funciona y que no, pero seria bueno que si se eligió una forma se terminara y después si se encuentra una mejor se mencione.

¿Cómo extraer datos para el usuario de manera segura en un programa?



A la hora de construir un programa, es importante organizar una manera en la que el usuario pueda obtener información.

Sin importar la manera, puede ser en log, via web o en consola. Lo importante es pensar cómo se va a generar esa información y cómo se presenta.

Debemos separar en módulos la generación de la presentación de la información para que la aplicación sea más flexible.

En lugar de extraer datos directamente podemos usar métodos como TryGetValue que intenten extraer o de lo contrario que regresen null para atajarnos ante posibles errores.

En este caso considero que los recorridos de las dictionary seria realizar busquedas de los datos a traves de sus metodos genericos como son

GetValueOrDefault

TryGetValue

Alguien tiene algun ejemplo en codigo?

Excelente clase

Dentro de nuestro reporteador crearemos un método para que nos regrese una lista de evaluaciones. Para ello primero llamaremos al método GetValueOrDefault del diccionario pasándole la llave, en caso de no encontrar un valor nos va a regresar un valor por defecto, este valor por defecto de una lista es null.

Hay un error con el código terminando la clase. El profesor olvidó poner el else. Dos posibles soluciones:

public IEnumerable<Escuela> GetListaEscuelas()
        {
            IEnumerable<Escuela> returnValue;

            if (_diccionario.TryGetValue(LlaveDiccionario.Escuela, out IEnumerable<ObjetoEscuelaBase> lista))
            {
                returnValue = lista.Cast<Escuela>();
            }
            else
            {
                // Write in log
                returnValue = null;
            }

            return returnValue;
        }

O mejor, retornando en el if, de tal manera que el else sea innecesario:

public IEnumerable<Escuela> GetListaEscuelas()
        {
            if (_diccionario.TryGetValue(LlaveDiccionario.Escuela, out IEnumerable<ObjetoEscuelaBase> lista))
            {
                return lista.Cast<Escuela>();
            }

            // Write in log
            return null;
        }

😎

Excelente clase

Que es mas recomendable, ¿Usar var o usar el tipo de dato?

el cambio de el método de un capitulo a otro no debería ser…

ejemplo:


public IEnumerable<Escuela> GetListaEvaluaciones()
        {
            IEnumerable<Escuela> rta;
            if (_diccionario.TryGetValue(LlaveDiccionario.Escuela, out IEnumerable<ObjetoEscuelaBase> lista))
            {
                rta = lista.Cast<Escuela>();
            }
            else
            {
                rta = null;
                //generar registro en log de Auditoria
            }

            return rta;
        }