Python

Mejora la legibilidad y calidad del código Python

Escribir un código legible y de calidad debería ser una de nuestras preocupaciones. No solamente es necesario que el programa realice la tarea para la que se ha diseñado de una forma eficiente, sino que también debería ser fácil de leer y comprender para cualquiera que lo desee revisar. Incluidos nosotros en un futuro. Recordando que la teoría de las ventanas rotas nos dice que un código mal cuidado empeora con el tiempo. Anteriormente he presentado alguna herramienta para realizar auditorías de calidad de código y auditorías enfocadas en el rendimiento para Python. En esta ocasión veremos una librería con la que revisar y mejorar la legibilidad y calidad del código Python.

Instalación de Refurb

Refurb es una librería con la que se puede modernizar el código Python. Ayudando a conseguir que un buen código sea aún mejor. Al igual que la mayoría de las librerías para Python, Refurb se puede instalar usando pip en la línea de comandos. En concreto se debe ejecutar el siguiente código.

pip install refurb

Nótese que la instalación de Refurb requiere tener instalado Python 3.10, si este trabajado con una versión anterior será necesario actualizar. Aunque la librería puede revisar el código anterior. Una vez hecho esto, para revisar el código, simplemente se debe ejecutar el comando

refurb code.py

En donde code.py es el archivo que contiene el código que se desea revisar.

Ejemplo de uso de Refurb

En la documentación de Refurb se puede ver un código de ejemplo con el que se puede ver el tipo de consejos que puede ofrecer a un programador de Python. Si escribimos el siguiente código en un archivo code-py

for filename in ["file1.txt", "file2.txt"]:
    with open(filename) as f:
        contents = f.read()

    lines = contents.splitlines()

    for line in lines:
        if not line or line.startswith("# ") or line.startswith("// "):
            continue

        for word in line.split():
            print(f"[{word}]", end="")

        print("")

Y se ejecuta el comando

refurb code.py

aparecerán por pantalla los siguientes mensajes

code.py:1:17 [FURB109]: Replace `in [x, y, z]` with `in (x, y, z)`
code.py:2:5 [FURB101]: Use `y = Path(x).read_text()` instead of `with open(x) as f: y = f.read()`
code.py:8:40 [FURB102]: Replace `x.startswith(y) or x.startswith(z)` with `x.startswith((y, z))`
code.py:14:9 [FURB105]: Use `print() instead of `print("")`

Ahora se pueden analizar los resultados obtenidos

Usar una tupla en lugar de una lista

El primer mensaje Replace `in [x, y, z]` with `in (x, y, z)` indica que debemos reemplazar la lista por una tupla. Esto será más eficiente ya que el objeto no va a cambiar y por eso no es necesario usar una lista que es mutable.

Usar read_text() en lugar de read()

El segundo mensaje Use `y = Path(x).read_text()` instead of `with open(x) as f: y = f.read()` indica que es más eficiente leer todos los archivos usando el comando read_text()en lugar de read().

Evitar código incensario

La tercera línea Replace `x.startswith(y) or x.startswith(z)` with `x.startswith((y, z))` que en lugar de usar el método startswith() dos veces para comprobar si la línea comienza "# " o "// " es mejor comprobar ambas opciones a la vez. Algo que se traduce en un código Python más eficiente.

No pasar información innecesaria a print()

Finalmente, el cuarto consejo Use `print() instead of `print("")` indica que cuando no se imprime nada no es necesario ni recomendable pasar una cadena vacía a print().

Conclusiones

En esta ocasión se ha visto Refurb, una nueva librería con la que se puede revisar los programas para conseguir una mayor legibilidad y calidad del código Python. Esta es una herramienta con la que podemos hacer que nuestro código sea aún más elegante y eficiente.

Imagen de Aaron Olson en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Lint

Recent Posts

Analytics Lane lanza ScoreFlow, un SaaS para construir y desplegar scorecards de crédito

En Analytics Lane seguimos evolucionando nuestras herramientas y damos un paso más con el lanzamiento…

3 días ago

DBSCAN y la selección de ε: teoría, intuición y aplicación práctica

Cuando hablamos de clustering, lo primero que viene a la mente suele ser k-means. Pero…

4 días ago

El bestiario de los indicadores económicos absurdos: El zoo patrio

Cualquier país desarrollado tiene sus propios indicadores folclóricos. España, por motivos que tienen mucho que…

1 semana ago

Por qué el banco te ofrece un 3% TAE y no es lo que parece

Entras a la web de tu banco. En la página principal, un banner llamativo: “Depósito…

2 semanas ago

Analytics Lane lanza la versión 1.3 del laboratorio con nuevas herramientas de evaluación de modelos y utilidades prácticas

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.3, disponible…

2 semanas ago

This website uses cookies.