Tiendo a escribir con éxito aplicaciones compactas que pueden encapsular muchas lógicas comerciales de una manera simple y no redundante. Tiendo a crear métodos pequeños, pero con el tiempo llego a métodos que tienen demasiados parámetros. Sé que cada código requiere su diseño, pero veo un patrón contrario a mi comportamiento y no estoy seguro de cuál sería la mejor manera de luchar contra él.¿Cómo evitar muchos parámetros en métodos críticos de mis aplicaciones?
Una situación típica sería algo así como:
public loanStructure CalculateSomeComplicatedInterestRate(enum clientType,
int totalAmout, bool useTaxes, bool doYearlySummary, bool doNotReloadClient, etc)
{
loanStructure ret = new loanStructure();
if (doNotReloadClient) ... ;
...
if (doYearlySummary) GroupResults(ret);
return ret;
}
y dentro del método, un árbol de llamadas hacia delante la configuración de booleanos (doYearlySummary, doNotReloadClient, etc.) a diferentes reglas de negocio que actúa sobre el cálculo.
IE, el problema no reside en el hecho de que todos los parámetros pueden ser encapsulados en un objeto (bigParameterStructure) ... No me siento cómodo con el patrón masterMethod, pero haciendo sobrecargas como CalculateSomeComplicatedInterestRateMonthly y CalculateSomeComplicatedInterestRateYearly acaba de ocultar una private CalculateSomeComplicatedInterestRate .... ¡¡algún problema !!
trabajos de proyecto y orientar objeto gruesa ayudaría ... pero aún así terminar arriba tener este tipo de métodos en algún lugar de mis objetos ...
Bueno chicos ... cualquier ayuda es bienvenida.
Pablo.
La lógica de negocio es lo que es. Si es complicado, es complicado, no es tu culpa. Esto me parece bien, a menos que también tenga ejemplos de esto en el código de lógica no comercial. –