Dieg0x17 / modulo-matrices-python

Automatically exported from code.google.com/p/modulo-matrices-python
1 stars 1 forks source link

Discusión: qué hacer cuando un cálculo matricial no es posible #1

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
En algunas funciones, cuando la operación no se puede realizar devuelve un 
texto de error, o una excepción. En otras, simplemente no devuelve nada o 
devuelve None.

A mi al principio me pareció buena idea lanzar un error cuando no se pudiera 
hacer la operación pedida, pero ahora me inclino más por devolver None o no 
devolver nada, y que quien haya llamado a la función se apañe con eso. Esto 
es lo que hace, por ejemplo, la función det(M)

Por ejemplo, supongamos que una aplicación necesita multiplicar dos matrices 
que no se pueden multiplicar. El módulo, en vez de lanzar un error, no 
devolvería nada. La aplicación podría entonces comprobar que no se ha 
devuelto nada y deducir, por tanto, que las matrices no se podían multiplicar, 
gestionando esa posibilidad como mejor le convenga. Lanzar un error es mucho 
más feo.

Mi voto es por devolver None o no devolver nada cuando una operación no se 
pueda realizar.

Original issue reported on code.google.com by felipe.hommen on 26 Feb 2013 at 9:21

GoogleCodeExporter commented 9 years ago
Estoy de acuerdo en devolver un none o en su defecto un código de error que 
puede ser interpretado por la función error, aunque el código de error puede 
tender a confundirse con el resultado de la función en funciones como det(M).

Original comment by diegolo...@gmail.com on 27 Feb 2013 at 5:09

GoogleCodeExporter commented 9 years ago
Otro punto a favor de no disparar errores es que no me gusta que pase :)
Es decir, alguna vez me ha pasado que he hecho algún script en python y ha 
saltado un error dentro de algún módulo que he utilizado. Y no me ha gustado 
nada, por sentirme como que tenía que revisar el código de ese módulo para 
ver que pasaba. Nunca lo he hecho.
Si el error salta en el código que yo he escrito, es otro cantar. Porque sé 
qué es lo que está haciendo (o debería saberlo) y no me da miedo revisarlo.

Original comment by felipe.hommen on 1 Mar 2013 at 6:54

GoogleCodeExporter commented 9 years ago
En algunas funciones como en la de comprueba(M) se debería imprimir una cadena 
de texto con el error en caso de que devuelva false.

ej
print error(2)
Fallo de formato, compruebe si es correcta la escritura de la matriz

Así si alguien usa el modulo desde el terminal y escribe mal una matriz se 
dará cuenta. Sobre todo si usa una función que llame a comprueba(M), ya que 
leerá el mensaje en vez de ver que no ha pasado nada por que la función ha 
reconocido que no es una matriz valida.

Original comment by diegolo...@gmail.com on 14 Apr 2013 at 4:16

GoogleCodeExporter commented 9 years ago
Pues me parece la mejor manera de gestionarlo. De hecho ahora me parece la 
manera obvia ¡Pues claro!

Un matiz que aportar: supongo que la manera más "siguiendo el protocolo" de 
hacerlo sería sacar los errores por la salida de error estándar, es decir,

>> sys.stderr.write(error(2))
en vez de
>> print(error(2))

Por lo que a mí respecta, empiezo a aplicar esta manera de gestionar los 
errores inmediatamente.
¡Pues claro!

Original comment by felipe.hommen on 14 Apr 2013 at 4:30