Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/01/2017, 11:16
agleiva
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: C# propiedades dentro de propiedades?

Cita:
Iniciado por Fernand0 Ver Mensaje
estoy queriendo hacer algo.. medio... "PHPero"
Yo te diría que en lugar de ir para atrás, y tratar de adaptar las malas prácticas de los lenguajes poco serios como PHP a lenguajes profesionales como C#, aprendas las prácticas correctas y te olvides de los lenguajes de juguete.

Cita:
Iniciado por Fernand0 Ver Mensaje
Ahora, a mi no me gustan los nombres largos.
Las buenas prácticas no se tratan de lo que a vos te guste o no, sino de lo que sea mejor para maximizar la legibilidad, mantenibilidad, y varios otros aspectos del código. Tu "gusto" es irrelevante.

si yo leo:

Código C#:
Ver original
  1. var a = new X<Y>();

no puedo a simple vista tener noción de qué cosa sea a, ni X, ni Y.

En cambio:

Código C#:
Ver original
  1. var clientes = new List<Cliente>();

es mucho más descriptivo, y reduce la necesidad de documentar o comentar el código, ya que a simple vista se entiende perfectamente.

Cita:
Iniciado por Fernand0 Ver Mensaje
Supongamos que tengo.. List<Persona>, y de aca quiero obtener toda mi información. Entonces creo lo primero que se me viene a la mente, es una propiedad(List<Persona> Personas)
Código:
string test1 = string.Format("Cantidad de personas: {0}", Personas.Count());
Todo perfecto... pero, es posible hacer esto..?
Código:
string test1 = string.Format("Cantidad de personas: {0}", Personas.Count());
string test2 = string.Format("Cantidad de personas buenas: {0}", Personas.Buenas.Count());
string test3 = string.Format("Cantidad de personas malas: {0}", Personas.Malas.Count());
hay varias formas de hacer esto, pero no lo recomiendo.

En lugar de eso, una simple consulta de LINQ es más que suficiente en este caso:

Código C#:
Ver original
  1. var personas = new List<Personas>();
  2.  
  3. // suponiendo que existe una propiedad en la clase Persona, para determinar si una persona es buena
  4. var personasBuenas = personas.Where(x => x.EsUnaPersonaBuena);
  5.  
  6. // todas las personas que no son buenas, por descarte son malas.
  7. var personasMalas = personas.Except(personasBuenas);
  8.  
  9. var total = $"Cantidad de personas: { personas.Count }";
  10. var buenas = $"Cantidad de Personas Buenas: { personasBuenas.Count() }";
  11. var malas = $"Cantidad de Personas Malas: { personasMalas.Count() }";

Otra opción sería heredar de List<Persona> e implementar estas propiedades, pero es un approach que no escala, ya que por cada combinacion de tipo y propiedades tendrias que crear una clase distinta, y luego convertir los datos a esa clase, etc.

En fin, la forma de programar en languajes serios dista bastante de lo que se suele hacer en php.