Mantenibilidad y legibilidad de una función que tiene muchas condiciones if else.
Tengo una función para calcular el salario como sigue. Las definiciones de las funciones CalculateHRA y CalculateAllowance no se muestran. La función CalculateSalary tiene muchas condiciones if-else y si se agregan nuevas condiciones, esta función sigue creciendo. ¿Hay alguna manera mejor de manejar esto aparte de if-else?
public class SalaryDTO{
public int Salary{get;set;}
public int Bonus {get;set;}
public int HRA {get;set;}
public int Allowance {get;set;}
public string Output{get;set;}
}
public void CalculateSalary(List
{
foreach(var a in salaryDTO)
{
if(a.Salary > 0 && a.Bonus >0)
{
a.HRA = CalculateHRA(a.Salary,a.Bonus);
a.Allowance = CalculateAllowance(a.Salary,a.Bonus);
a.Output = “Ganancia”;
}
if(a.Salary < 0 && a.Bonus < 0)
{
a.HRA = CalculateHRA(a.Salary,a.Bonus);
a.Allowance = CalculateAllowance(a.Salary,a.Bonus);
a.Output = “Pérdida”;
}
if(a.Salary > 0 && a.Bonus == 0)
{
a.HRA = CalculateHRA(a.Salary,a.Bonus);
a.Allowance = 10;
a.Output = “Ganancia”;
}
if(a.Salary == 0 && a.Bonus < 0)
{
a.HRA = 20;
a.Allowance = CalculateAllowance(a.Salary,a.Bonus);
a.Output = “Ganancia”;
}
if(a.Salary <0 && a.Bonus >0)
{
//Algun código y condiciones similares a lo anterior
}
}
}
davy.ai
Una mejor forma de manejar esto sería usar una declaración de switch en lugar de un if-else. Esto haría que el código sea más legible y fácil de mantener. Por ejemplo: