[Python-es] Pregunta sobre diseño de una biblioteca

Chema Cortes pych3m4 en gmail.com
Jue Feb 14 18:27:29 CET 2013


El día 14 de febrero de 2013 12:34, Juan Luis Cano
<juanlu001 en gmail.com> escribió:

> On 02/13/2013 11:15 PM, Chema Cortes wrote:
>> Tú tienes "fórmulas" y la mejor representación de una fórmula es como una
>> "función".
>
> Bueno, en este momento en vez de funciones son básicamente métodos de una
> clase.

Puede parecer que métodos y funciones son la misma cosa. Técnicamente
hablando, en python ambos son "descriptores", con la diferencia que
los métodos están enlazados a una instancia y/o clase, y las funciones
no. Esta pequeña diferencia tiene especial relevancia para cálculo
concurrente o distribuido por el acople que pueda añadir. Si puedes
evitarlo, lo ideal es usar funciones que sólo dependan de sus
argumentos "inmutables" de entrada y sin efectos colaterales.


>> Los principios SOLID los veo difíciles de cumplir sin contar con un
>> potente sistema de tipado de datos (y de anotaciones)...
>
> Yo los veo algo útil, pero como dices tú sin un potente sistema de tipos es
> complicado.

La utilidad depende de la facilidad de pasar del principio teórico a
la práctica. Muchas veces pienso que este tipo de principios se
crearon para suplir en java la carencia de funciones como objetos de
primera clase. Ya no quiero pensar lo arcaicos que se ven desde
lenguajes con modenos sistemas de tipos como scala.


> No me convence tanto tener ecuaciones agrupadas en módulos o paquetes. Al
> estar derivadas de unas hipótesis y de unas simplificaciones que he
> introducido en mi modelo, y mi modelo está representado por un objeto, la
> idea de que la ecuación sea un método de la clase me convence más.

Si por simplicar el modelo te refieres a restringir grados de libertad
aplicando condiciones de contorno, entonces sí que vería el modelo
restringido como una "especialización" del modelo general, lo que
encajaría, más o menos, en una jerarquía de clases.

Si, por el contrario, la simplificación se refiere a un cambio en las
hipótesis (pe: asumir que trabajas con gases ideales), entiendo que no
estás especializando el modelo, más bien estás usando un conjunto de
ecuaciones distintas que, bajo ciertas condiciones, pueden suplir el
comportamiento que hubiera "heredado" del modelo general ("Duck
model"? :-P)

En ambos casos, lo que más tiene que importarte es conseguir que
código sea reutilizable y éso depende, sobre todo, de tus habilidades.


--
Hyperreals *R: http://ch3m4.org/blog
Quarks, bits y otras criaturas infinitesimales


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