C# de los fundamentos al dominio — Lección 2
Cree un flujo con declaraciones, bucles y métodos condicionales.
Los artículos escritos en este blog fueron creados con el objetivo de enseñar. Además, la información del artículo puede ser incorrecta, así que tenga cuidado.
Un programa no termina simplemente almacenando valores. Debe ejecutar código diferente según las condiciones, repetir las mismas tareas y dividir los métodos en unidades significativas.
Declaraciones condicionales y cambios
string GetState(int health)
{
if (health <= 0)
{
return "Dead";
}
return health < 30 ? "Danger" : "Normal";
}
int reward = rank switch
{
"S" => 1000,
"A" => 500,
_ => 100
};
Es más fácil de leer para dos puntas simples y el interruptor funciona bien al comparar un valor con varios casos. _ es el caso restante que no se ajusta a ninguno de los patrones anteriores.
bucle
var damages = new[] { 10, 20, 15 };
int total = 0;
foreach (int damage in damages)
{
if (damage <= 0)
{
continue;
}
total += damage;
}
foreach es conveniente para leer elementos en orden. Si necesita un índice o necesita controlar directamente el rango de repetición, utilice for.
Agregar o eliminar elementos de una colección dentro de un bucle puede invalidar la enumeración. Es más seguro recoger los objetos que se van a eliminar por separado o revisarlos por detrás.
Métodos y retornos anticipados
bool TryAttack(Player attacker, Monster target, out int damage)
{
damage = 0;
if (!attacker.IsAlive || !target.IsAlive)
{
return false;
}
damage = Math.Max(1, attacker.Attack - target.Defense);
target.TakeDamage(damage);
return true;
}
Si devuelve una entrada que no se puede procesar primero, la sangría del flujo normal no se profundizará. El parámetro out se puede utilizar para devolver tanto el éxito como el fracaso y el resultado del cálculo.
Los nombres de los métodos deben revelar la intención de quien llama en lugar de la implementación interna. Cuando las condiciones y las iteraciones se vuelven largas, es mejor asegurarse de que cada método tenga una sola responsabilidad, en lugar de simplemente reducir el número de líneas.