Que tal si… los parámetros por defecto también tuviesen esto?

   Hoy, pensando un poco acerca de la vida, se me ocurrió una mejora para cierta posibilidad que nos ofrecen la mayoría de los lenguajes que valen la pena. Me refiero claro está, a los parámetros por defecto.

   Como muchos de nosotros ya sabemos, la forma clásica de escribir parámetros por defecto es simplemente asignándoles un valor en la declaración de una función: ej: “void MyFunction(int a, int b = 24, int c = 88){}”.

   El chiste, es llamar a la función sin especificar todos los parámetros, entonces para llamar a dicha función haríamos algo así: “MyFunction(2);”… y el parámetro por defecto nos completaría los parámetros que “nos faltó” escribir, dejando los 3 parámetros con los valores 2, 24 y 88 respectivamente.

   El tema con los parámetros por defecto, es que nos traen una limitación (con la que se puede vivir perfectamente, pero es una limitación a fin de cuentas).

   Que pasa si nosotros queremos quedarnos con el valor por defecto de “b” (osea 24), pero, a su vez, queremos cambiar el valor de “c”?

   E aquí un pequeño problema, donde un parámetro por defecto tiene prioridad sobre otro. Si nosotros escribimos manualmente el parámetro, escribiendo por ejemplo: “MyFunction(2,24,286);”, si nuestra idea era preservar el valor por defecto de “b”, estamos haciendo algo un poco “peligroso”. Que pasa si cambiamos los parámetros por defecto de “MyFunction” más adelante? Tendríamos que revisar todas las llamadas a “MyFunction” y cambiar todas las veces que pretendíamos volver a asignar un parámetro a su valor por defecto.

   Pensando en esto… y una vez encontrado un leve problema en esta situación, se me ocurrió esto.

Quienes programamos en C# sabemos que este uso de “default”, no es correcto… pero… y si lo fuera?

Que pasaría si la palabra “default” se pudiese usar (también) para especificar el valor de los parámetros por defecto?

Creo yo que sería una elegante solución al problema que planteo.

Y ustedes que opinan?

8 Responses to “Que tal si… los parámetros por defecto también tuviesen esto?”

  1. no entiendo lenguaje C#

  2. El tag del post es programación. Tengo planes de postear más cosas que no sean noticias de mis ultimos juegos. Paso mucho tiempo desarrollando cosas, y si posteo solo cuando termino algo, el blog casi que no tiene vida. =S Además, esta bueno compartir estas cosas también. =)

  3. Con ideas como estas, un precompilador Seba# no sería poca cosa XD

  4. En mi opinión lo que hacía Visual Basic (antes de .NET) era lo más fácil:

    MyFunction(2, , 96);

    Sin embargo, código así no es manejable e igualmente, si variamos los parámetros de MyFunction2 en el futuro, se vuelve un desastre.

    El problema lo solucionan así:

    MyFunction(2, c:88);

    No soy fan de programar así, pero en mi opinión es mucho más claro y a la larga se entiende mejor.

    Mi opinión personal 🙂 saludos!

    • Muy interesante!, tenés razón. Es verdad que si variamos el orden de los parámetros se puede volver un lío. No lo había considerado! Un honor su comentario señor Yuan-Hao! aprovecho para felicitarte por tus juegos, me alegré mucho al ver que están continuando el Little Ninja. Hablé contigo en la GDC cuando mostraron el juego Wind&Water, realmente los felicito a ambos por la calidad de sus desarrollos!

  5. Pensas hacer mas juegos?

Leave a reply to Seba Cancel reply