Ver Mensaje Individual
  #16  
Antiguo 10-07-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

Luigi_cr:

Conozco, he utilizado, pero no me agrada del todo esa flexibilidad adicional de Visual Basic para el manejo de los parámetros opcionales porque propicia el viejo vicio de la parametrización excesiva, en lugar de fomentar una adecuada programación orientada a objetos. Vaya, este tipo de cosas son el quid de las eternas rivalidades entre Delphi y Visual Basic, entre lo bien pensado y lo que vende al vulgo.

Dices que no tiene mucho sentido que Delphi impida omitir parámetros intermedios. Bien, eso sería cierto si por otra parte tuviera sentido un método con 10 parámetros y no existiera en Delphi la sobrecarga de funciones (esta característica se incluyó en Delphi al mismo tiempo que los parámetros opcionales).

Si lo analizas de una manera objetiva, te darás cuenta que rara vez es menester crear un método con más de tres o cuatro parámetros. La POO está hecha para simplificar la manera de trabajar con los datos y la funcionalidad que hay alrededor de ellos. Un método como ese X.Opcionales tendría que ser revisado.

Ahora bien, ya que tengas un método más decente, digamos, que sólo declare unos tres o cuatro parámetros, podrías recurrir a la sobrecarga (directiva Overload), como bien lo sugirió Neftali, para entonces permitir la "omisión" de un parámetro intermedio, que en realidad sería utilizar la versión del método que no requiere (que asume) tal parámetro.

Código Delphi [-]
    TMiSQLConnection = Class (TSQLConnection)
      Public
        { Regresar al punto de restauración de nombre Name }
        Procedure RollbackSavePoint (Const Name :String;
          Const Release :Boolean = False); Overload;

        { Regresar al último punto de restauración marcado }
        Procedure RollbackSavePoint (Const Release :Boolean = False);
          Overload;

Espero esto sea de utilidad.

Un abrazo opcional.

Al González.

Última edición por Al González fecha: 10-07-2007 a las 17:12:20.
Responder Con Cita