El Zen de
Python se compone de 19 principios para escribir c贸digo Pyth贸nico (claro,
preciso y sencillo), que se encuentran contenidos en la definici贸n de PEP 20. Su objetivo es homogeneizar las formas de escritura de c贸digo, tomando las mejores
pr谩cticas, y es algo que tanto t煤 (como lector de c贸digo) como tus colegas
(como lectores de tu c贸digo) agradecer谩n conocer e implementar, ya que los ayudar谩 a escribir un c贸digo de mayor calidad.
Aqu铆 los adaptamos
e interpretamos, para que puedas implementarlos desde ya en tus proyectos en
Python:
- Bello es mejor que feo: Python se caracteriza primero que nada por su superioridad est茅tica,
ante los dem谩s lenguajes de programaci贸n. ¡Aprov茅chala para que tu c贸digo luzca
de esa manera!
- Expl铆cito es mejor que impl铆cito: Debes lograr que quien lea tu c贸digo no
necesite hacer interpretaciones o saber de antemano estructuras propias que has
creado. Prioriza hacer m谩s f谩cil que las otras personas entiendan el c贸digo,
incluso si debes desarrollarlo en unas l铆neas de c贸digo m谩s.
- Simple es mejor que complejo: No hay m茅rito en plantear una soluci贸n extremadamente
sofisticada a un problema que puede resolverse de manera simple y directa. Es
mejor tener una implementaci贸n simple, que ocupe pocas l铆neas de c贸digo y sea
entendible, a que sea una larga y complicada.
- Complejo es mejor que complicado: Si por optimizar 煤nicamente la brevedad y simplicidad,
acabamos con un c贸digo complicado de entender, demos un paso atr谩s: es mejor un
c贸digo m谩s comprensible, a煤n si complejo, que un c贸digo complicado de entender.
En resumen: Simple > Complejo > Complicado.
- Plano es mejor que anidado: Es com煤n dejarse llevar por la tentaci贸n (en Python y otros lenguajes
de programaci贸n), de pretender que una funci贸n o un objeto resuelva todos los
problemas. Cuando te has dado cuenta, anidaste condicionales dentro de bucles
dentro de funciones dentro de otros condicionales, dentro de otro bucle. En
Python es sencillo detectarlo porque lo evidencian la cantidad de indentaciones
necesarias. Son preferibles las estructuras simples y planas. Sino 煤nicamente lograr谩s
agotar al lector de tu c贸digo.
- Disperso es mejor que denso: Python implementa este principio de manera obligatoria a trav茅s de la
indentaci贸n, haciendo inevitable que el c贸digo sea menos compacto y muestre sus
jerarqu铆as propias. Sin embargo, ciertas estructuras como comprensi贸n de
listas, pueden volverse densas r谩pidamente.
- La legibilidad es importante: En la industria es muy com煤n trabajar en
equipos, por proyectos, y manteniendo c贸digo ya escrito. Es importante que
otros programadores puedan entender lo que has escrito en tu programa.
Nuevamente: hay m谩s m茅rito en plantear soluciones simples a los problemas, que
soluciones extremadamente complicadas cuando no son requeridas.
- Los casos especiales no son lo suficientemente especiales como para
romper las reglas (sin embargo, la practicidad le gana a la pureza): si te encuentras invirtiendo
much铆simo tiempo en intentar cuadrar tu c贸digo a las reglas anteriores, puede
que valga una excepci贸n para ser m谩s eficientes y pragm谩ticos. ¡Pero que no se
convierta en un h谩bito! La raz贸n de existir de las reglas, es que podamos
cumplirlas.
- Los errores nunca deber铆an pasar silenciosamente (a menos que se
silencien expl铆citamente): ocultar los errores solo traer谩 m谩s y m谩s errores (y m谩s graves). Un
buen programador los gestiona y les presta atenci贸n a cada uno de ellos. Exista
la posibilidad de silenciar los errores, pero debes hacerlo con sumo criterio
cuando hayas descartado que puedan tener impacto en el sistema.
- Frente a la ambig眉edad, evitar la tentaci贸n de adivinar: Nuestro c贸digo deber铆a solamente
tener una interpretaci贸n. Mantente alerta a los casos en que en un contexto, el
c贸digo significa algo, y en otro, otra cosa. Puede que sea conveniente buscar
otra soluci贸n.
- Deber铆a haber una, y preferiblemente solo una, manera obvia de hacer las cosas.
(A pesar de que esa manera no sea obvia a menos que seas holand茅s): Al adquirir experiencia en la
soluci贸n de los problemas de programaci贸n, estas maneras se ir谩n manifestando.
Hasta entonces, practica. El "holand茅s" es Guido Van Rossum, creador de Python
(definitivamente, muy inteligente).
- Ahora es mejor que nunca: no dejes para ma帽ana lo que puedes hacer hoy. Prioriza correctamente
para que flujo de trabajo no se vea interrumpido.
- …Aunque nunca es muchas veces mejor que ahora mismo: si
por hacer todo en el momento, poblamos el c贸digo de bugs, hubiera sido preferible
en ese caso no hacerlo nunca.
- Si la implementaci贸n es dif铆cil de explicar, es una mala idea, pero si
es f谩cil de explicar, puede ser una buena idea: Un algoritmo es una secuencia de pasos para resolver
un problema. Si esta secuencia es l贸gica, racional, y f谩cil de explicar, ya has
dado el primer paso en la direcci贸n correcta. Si es muy compleja explicarla,
puede que no convenga implementarla, ya que ni la habremos entendido nosotros.
Intenta explic谩rsela a un pato de goma para el ba帽o, y comprueba si te has
enredado.