Manejo simple de parámetros

Esteban Manchado Velázquez zoso en demiurgo.org
Mie Jun 11 12:00:55 CEST 2003


On Wed, Jun 11, 2003 at 11:42:00AM +0200, Marcos Sánchez Provencio wrote:
> ¿Por qué es ortopédico? Se entiende mejor que las versiones de ruby y
> perl. Ya se sabe, explícito es mejor que implícito.

   /me intentando evitar en una guerra de lenguajes :-)

   Son formas distintas de verlo, pero algo que es trivial y bastante usual,
en mi opinión debería poder hacerse con una construcción del lenguaje o con
una expresión hecha. Claro, que también prefiero Ruby y Perl a Python, y
ustedes seguramente no ;-)

   Sobre lo de que se entiende mejor y lo de que explícito es mejor que
implícito, reconocerás que es una opinión :-) Quiero decir, vale, es más fácil
de entender para alguien que _no_sabe_, y más fácil de aprender (para
cualquiera, sin ninguna duda), pero yo, como programador que ya conozco el
lenguaje, entiendo mucho mejor esto:

Ruby:
servidor = ARGV.shift || 'miservidor'
usuario  = ARGV.shift || 'miusuario'
clave    = ARGV.shift || 's3cr3t4'

que esto, sobre todo porque ocupa mucho más y los detalles están especificados
explícitamente (detalles que realmente no me interesan en _este_ caso, y que
en mi opinión ocultan el propósito de esa parte del programa):

if len(sys.argv) > 0:
   servidor = sys.argv.pop(0)
else:
   servidor = 'miservidor'

if len(sys.argv) > 0:
   usuario = sys.argv.pop(0)
else:
   usuario = 'miusuario'

if len(sys.argv) > 0:
   clave = sys.argv.pop(0)
else:
   clave = 's3cr3t4'

Es decir, que con la versión de Ruby no me pierdo en detalles, de un vistazo
sé exactamente qué está pasando, y no tengo que ponerme a leer las llamadas.

   Con esto no digo que implícito sea mejor que explícito, sólo digo que en
este caso, creo que hacerlo explícitamente no es más que una molestia y esta
legibilidad al programa (insisto, para alguien que sepa programar en el
lenguaje, no para alguien que intenta aprender a programar).

   Por cierto, retomando la pregunta inicial: ¿quieres decir que no se te
ocurre ninguna forma de hacerlo más corto? :-)

   Saludos,

-- 
Esteban Manchado Velázquez <zoso*demiurgo*org> - http://www.demiurgo.org
No software patents in Europe! - eurolinux.org - proinnova.hispalinux.es
Join Amnesty International - http://www.amnesty.org/actnow




Más información sobre la lista de distribución Python-es