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