Ver Mensaje Individual
  #21  
Antiguo 10-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 27
Delphius Va camino a la fama
Hola,

Opino igual que Al, ¿10 parámetros? ¿Que de ellos el 40% sea opcional?
Desde ya decanto esa opción. Creo que deberías reconsiderar un mejor análisis de la situación.
Yo he llegado a declarar funciones, y clases... pero ninguna excede cuanto mucho a los 4 o 5 parámetros.

¿No podrías considerar que agunos parámetros sean propiedades de la clase?

Con respecto a la opción que te recomienda Neftali, creo que es la acertada. Y eso no quiere decir que debas codificar 10 veces el mismo código. Como te lo han dicho hay un error de diseño. La solución es buscar la mínima expresión común e implementarla en una función. Cada sobre carga llamará a dicha función (que debe ser privada, según una primera impresión y análisis).

El objetivo de los parámetros opcionales es evitar estar declarando valores que en la mayoría de los casos son considerados por defecto (o considerado lo mayormente esperado), por lo cual indicar un valor distinto sería considerado un caso "particular" (algo no habitual).

Este enfoque puede llevarse a la inversa. Es decir que nadie puede impedirte que emplees el valor opcional (por defecto) para evitar hacer una cosa. Algo como esto:

Código Delphi [-]
const
  CONST_NO_HAGAS_ESTO = 4;

//....

X.procedure EjemploALaInversa(A: integer; B: real; C: integer = CONST_NO_HAGAS_ESTO);
// posiblemente deba llevar la clausura overload....
begin
// ...
if C <> CONST_NO_HAGAS_ESTO
   then begin
            // Lo que quieres que haga...
          end
   else begin
            // Lo que no quieres que haga...
         end;
//...
end;

En resumen lo que he tratado de decirte es que podrías llevar y emplear el valor opcional en la forma inversa, es decir que si se suministra un valor distinto que se haga la operación que deba realizar.

Para finalizar, debo decirte que a pesar de que esta alternativa pueda llegar a funcionar sigue siendo un error conceptual y de diseño ya que el modo de trabajo no es el normal o "el esperado" del lenguaje. Puede llevar a confusiones en el futuro, y lo hace muy dificil de seguirle un correcto mantenimiento y documentación.

Espero que se me entienda.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita