[Python-es] PyViewPredicate, críticas

Chema Cortes pych3m4 en gmail.com
Dom Mar 3 14:51:44 CET 2013


El día 1 de marzo de 2013 19:11, Miguel Ángel Alarcos Torrecillas
<miguel.alarcos en gmail.com> escribió:
> Hola a todos, me gustaría dar a conocer un proyecto al que he dado el nombre
> de PyViewPredicate. Se trata de crear GUIs de manera declarativa, y además
> reactiva. Con esto quiero decir que la GUI recibe los nuevos datos a mostrar
> después de que se hayan modificado en el mismo u otro computador.
>
> De momento he implementado un visualizador de objetos BasicView (visualiza
> una fila de una tabla de BDD) y un visualizador Table que visualiza un
> predicado más complejo que es realmente una SQL.
>
> La wiki del proyecto tiene un ejemplo explicativo:
>
> https://bitbucket.org/miguel_alarcos/pyviewpredicate/wiki/Home
>
> Admito todo tipo de críticas, pero especialmente las constructivas.
> Responderé a cuantas dudas o cuestiones me planteéis.
>
> Espero no robaros mucho tiempo, saludos pythónicos desde Murcia :)

He estado revisando el código un rato hasta que me he cansado, por lo
que solo puedo darte una impresión superficial.

Lo primero, es recomendarte que siguas un mismo estilo para nombrar
las clases. No resulta cómodo ver mezclados los estilos "CamelCase" y
unix.

Se ve que has invertido muchas horas en crear este código. Pero
necesita bastante refactorización, sobre todo deberías hacer un
paquete con el monolítico 'wxpython_gui' y, de paso, darle otro nombre
que lo diferencie mejor del paquete wxpython general.

Por otro lado, deberías limpiar el código. Al repositorio puedes
indicarle que no versione los ficheros .pyc (sobra designable.pyc),
quitar ficheros de pruebas (wxApp1.py, wxApp2.py,...) y que no
aparezcan otras versiones que no tienen nada qué ver ahora
(tkinter_app.py, tkinter_gui.py). Así mismo, asegúrate que estás
versionados todos los ficheros que usas (falta 'pubsub.py', que
supongo es una dependencia externa).

Siguiendo con cuestiones de estilo, nunca deberías usar 'from modulo
import *'. Está totalmente desaconsejado fuera de su uso en la línea
de comandos. En un código normal deberías siempre indicar
explícitamente qué objetos estás importando.

En cuanto a mejorar la compresión, creo, por lo que he visto, que
intentas implementar algo similar al patrón Actor. Localizar todo el
código relativo a la creación de actores en su propio módulo puede
ayudar más a entender lo que hace el código, así como localizar más
rápido los mensajes a los que responden los actores (por ejemplo, en
con un diccionario).


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


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