Del libro Professional Enterprise .Net , que tiene 5 Clasificación de estrellas en Amazon que estoy dudando después de haber leído. Aquí hay una clase de prestatarios (en C # pero es bastante básico; cualquiera puede entenderlo) que forma parte de una solicitud de hipoteca que los autores crearon:
public List<BrokenBusinessRule> GetBrokenRules()
{
List<BrokenBusinessRule> brokenRules = new List<BrokenBusinessRule>();
if (Age < 18)
brokenRules.Add(new BrokenBusinessRule("Age", "A borrower must be over 18 years of age"));
if (String.IsNullOrEmpty(FirstName))
brokenRules.Add(new BrokenBusinessRule("FirstName", "A borrower must have a first name"));
if (String.IsNullOrEmpty(LastName))
brokenRules.Add(new BrokenBusinessRule("LastName", "A borrower must have a last name"));
if (CreditScore == null)
brokenRules.Add(new BrokenBusinessRule("CreditScore", "A borrower must have a credit score"));
else if (CreditScore.GetBrokenRules().Count > 0)
{
AddToBrokenRulesList(brokenRules, CreditScore.GetBrokenRules());
}
if (BankAccount == null)
brokenRules.Add(new BrokenBusinessRule("BankAccount", "A borrower must have a bank account defined"));
else if (BankAccount.GetBrokenRules().Count > 0)
{
AddToBrokenRulesList(brokenRules, BankAccount.GetBrokenRules());
}
// ... more rules here ...
return brokenRules;
}
Listado de código completo en snipt.org .
Lo que me confunde es que se supone que el libro trata sobre el diseño empresarial profesional. Tal vez estoy un poco sesgado porque el autor confiesa en el capítulo 1 que no sabía realmente qué era el desacoplamiento, o qué significaba SOLID hasta el octavo año de su carrera como programador (y creo que escribió el libro en el año 8.1)
No soy un experto pero no me siento cómodo con:
-
Demasiadas declaraciones if else.
-
La clase sirve como una entidad y tiene validación. ¿No es ese un diseño maloliente? (Es posible que deba ver la clase completa para obtener algo de contexto)
Tal vez me equivoque, pero no quiero aprender malas prácticas de un libro que se supone que enseña un diseño empresarial. El libro está lleno de fragmentos de código similares y realmente me está molestando ahora. Si es un mal diseño, ¿cómo podría evitar usar demasiadas declaraciones en caso contrario?
Obviamente, no espero que reescribas la clase, solo ofrezco una idea general de lo que se podría hacer.