Cómo Dropbox mejoró la productividad y el mantenimiento de su código Python

Python es un lenguaje de programación muy popular, pero también tiene sus limitaciones, especialmente cuando se trata de escribir código muy extenso y complejo. Si hay alguna empresa que está familiarizada con los desafíos de utilizar Python a gran escala, es Dropbox, la compañía de almacenamiento en la nube.

Dropbox ha desplegado más de cuatro millones de líneas de código en Python, y es una de las muchas empresas que anotan el código escrito en este lenguaje de programación dinámico para facilitar la depuración y comprensión del mismo.

Anotar el código en Python permite a los desarrolladores indicar los tipos de datos para variables, así como los tipos de argumentos de función y valores de retorno. Esta práctica ofrece varios beneficios, entre los cuales se encuentra el uso de un comprobador de tipos estáticos.

Un comprobador de tipos como mypy permite a los desarrolladores detectar una clase de errores que de otra manera podrían pasarse por alto en el software, al permitir ejecutar comprobaciones antes de que el código se ejecute. Estas comprobaciones verifican diferentes operaciones, como si los datos que se pasan hacia y desde las funciones son del tipo correcto.

Aunque Python sigue siendo un lenguaje de tipado dinámico, en 2015 se agregó el soporte para Type Hints en Python 3.5, lo que permite a los desarrolladores incluir anotaciones que pueden ser examinadas por un comprobador de tipos como mypy.

Estas anotaciones son opcionales y no se ejecutan, lo que permite al desarrollador utilizar una combinación de tipado dinámico y estático, y están diseñadas para no afectar la velocidad a la que se ejecuta el código.

Mission Control: La función imprescindible de macOS para ahorrar tiempo y energía

El inconveniente es que agregar anotaciones de tipos implica un poco más de trabajo para el desarrollador al principio, o más adelante si se anotan códigos heredados, ya que ahora tienen que especificar los tipos de datos de manera explícita.

Sin embargo, Jukka Lehtosalo, el principal desarrollador de mypy e ingeniero de Dropbox, afirma que el costo es más que válido al trabajar con millones de líneas de código en Python.

“A nuestra escala, millones de líneas de Python, el tipado dinámico en Python dificulta innecesariamente la comprensión del código y comienza a afectar seriamente la productividad”, escribe Lehtosalo.

De hecho, según Lehtosalo, la verificación de tipos y las anotaciones se vuelven importantes en un lenguaje dinámico como Python mucho antes de alcanzar millones de líneas de código.

“Una vez que tu proyecto tiene decenas de miles de líneas de código y varios ingenieros trabajan en él, nuestra experiencia nos dice que comprender el código se vuelve fundamental para mantener la productividad del desarrollador”, añade.

“Sin anotaciones de tipo, problemas básicos como determinar los argumentos válidos para una función o los posibles tipos de valores de retorno se convierten en un problema difícil”.

Cómo configurar rsync para hacer copias de seguridad en Linux

Pero anotar cuatro millones de líneas de código en Python de esta manera no es una tarea sencilla. Aquí se presentan algunos de los beneficios menos conocidos y cómo Dropbox logró llevar a cabo esta tarea.

Índice de Contenido
  1. Beneficios no tan evidentes
    1. Hace que la refactorización sea más fácil
    2. Hace que las pruebas sean más fáciles
    3. Hace que sea más fácil escribir Python
    4. Proporciona documentación verificada
  2. Cómo lo hizo Dropbox
    1. Anotó gradualmente el código heredado con comprobaciones semanales de cobertura
    2. Aumentó la rigurosidad con el tiempo
    3. Dio pasos para mejorar el rendimiento
    4. Dio charlas sobre los beneficios de la verificación de tipos
    5. Realizó comprobaciones periódicas con el personal sobre sus frustraciones
    6. Proporcionó integraciones de editores de código
    7. Experimentó con la conversión automatizada
  3. También puedes leer

Beneficios no tan evidentes

Hace que la refactorización sea más fácil

“La refactorización es mucho más fácil, ya que el comprobador de tipos a menudo indica exactamente qué código debe cambiarse”, dice Lehtosalo. “No necesitamos tener la esperanza de tener una cobertura de pruebas del 100%, lo cual suele ser impracticable de todos modos. No necesitamos estudiar trazas de pila profundas para entender qué salió mal”.

Hace que las pruebas sean más fáciles

“Incluso en un proyecto grande, mypy a menudo puede realizar una comprobación completa de tipos en una fracción de segundo”, afirma. “Ejecutar pruebas a menudo lleva unos segundos o minutos. La comprobación de tipos brinda una retroalimentación rápida y nos permite iterar más rápido. No necesitamos escribir pruebas unitarias frágiles y difíciles de mantener que simulen y parcheen todo el entorno para obtener una retroalimentación rápida”.

Hace que sea más fácil escribir Python

“Los entornos de desarrollo integrados como PyCharm y Visual Studio Code aprovechan las anotaciones de tipo para proporcionar funciones de autocompletado de código, resaltar errores y admitir una mejor funcionalidad de búsqueda de definición, y estas son solo algunas de las características útiles que permiten los tipos”, añade. “Para algunos programadores, esta es la mayor y más rápida ventaja”.

Proporciona documentación verificada

Si bien se podrían documentar los tipos en docstrings, Lehtosalo dice que usar un comprobador de tipos resuelve el problema de la documentación inconsistente o poco clara al hacer cumplir un estilo único. “Un comprobador de tipos como mypy resuelve este problema al proporcionar un lenguaje formal para describir tipos y al validar que los tipos proporcionados coincidan con la implementación (y, opcionalmente, si existen). En esencia, proporciona documentación verificada”, afirma.

Cómo lo hizo Dropbox

Anotó gradualmente el código heredado con comprobaciones semanales de cobertura

“Enviamos informes por correo electrónico a los equipos semanalmente destacando la cobertura de anotaciones y sugiriendo las áreas de mayor valor para anotar”.

Cómo acceder y administrar complementos en Microsoft Outlook

Aumentó la rigurosidad con el tiempo

“Aumentamos gradualmente los requisitos de rigurosidad para el nuevo código”, dice. “Comenzamos con consejos de linters que pedían escribir anotaciones en archivos que ya tenían algunas. Ahora requerimos anotaciones de tipo en nuevos archivos de Python y en la mayoría de los archivos existentes”.

Dio pasos para mejorar el rendimiento

Comprobar una cantidad tan grande de código obviamente llevará mucho tiempo, y Lehtosalo dice que “un obstáculo inmediato para aumentar el uso de mypy fue el rendimiento”.

Sin embargo, Dropbox pudo mejorar el rendimiento mediante la comprobación incremental, es decir, solo comprobando los archivos modificados y sus dependencias. También desarrollaron un demonio mypy con varias eficiencias y una versión compilada de mypy que se ejecuta 4 veces más rápido.

Dio charlas sobre los beneficios de la verificación de tipos

“Impartimos charlas sobre mypy y conversamos con equipos para ayudarles a comenzar”.

Realizó comprobaciones periódicas con el personal sobre sus frustraciones

“Realizamos encuestas periódicas para identificar los puntos problemáticos principales y hacemos todo lo posible para abordarlos (¡incluso inventamos un nuevo lenguaje para hacer que mypy sea más rápido!)”.

Proporcionó integraciones de editores de código

“Proporcionamos integraciones para ejecutar mypy en editores populares en Dropbox, incluyendo PyCharm, Vim y VS Code. Estas integraciones facilitan mucho el trabajo con las anotaciones, lo cual es común al anotar código heredado”.

Cómo configurar y utilizar el PowerToy FancyZones en Windows 10

Experimentó con la conversión automatizada

Después de que una herramienta de anotación automatizada anterior resultara en gran parte ineficaz, Dropbox está experimentando con una herramienta de análisis estático creada por ellos mismos. “Desarrollamos una herramienta para inferir las firmas de funciones utilizando el análisis estático. Solo puede tratar con casos suficientemente simples, pero nos ayudó a aumentar la cobertura sin mucho esfuerzo”, dice Lehtosalo.

También puedes leer

  • El creador de Python sobre cómo el lenguaje de programación aprende de TypeScript (Newsmatic)

  • Cómo convertirse en un desarrollador: una hoja de trucos (Newsmatic)

  • Implementación de DevOps: una guía para profesionales de IT (PDF gratuito) (Newsmatic)

  • Guía de consejos para entrevistas telefónicas: programador de software (Newsmatic Premium)

  • Lenguajes de programación: los desarrolladores revelan cuáles aman más, cuáles odian más y cuál paga mejor (ZDNet)

    Cómo desplegar y gestionar Mozilla Firefox en tu organización
  • Se necesita trabajo para mantener tus datos privados en línea. Estas aplicaciones pueden ayudar (CNET)

  • Lenguajes de programación y recursos para la carrera de desarrollador (Newsmatic en Flipboard)

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Software, allí encontraras muchos artículos similares a Cómo Dropbox mejoró la productividad y el mantenimiento de su código Python , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.