Video Summary and Transcription
La charla presenta el concepto de Lifetime en el desarrollo de software, que se utiliza para manejar las tareas de limpieza. Al utilizar un objeto simple llamado Lifetime, los ingenieros pueden vincular funciones de limpieza y reutilizarlas en sus aplicaciones. Los Lifetimes pueden estar anidados, lo que permite la creación de cadenas y árboles para gestionar las dependencias. La charla también menciona la capacidad de crear diferentes tipos de lifetimes, como lifetimes secuenciales, que pueden ser útiles para cancelar solicitudes o limpiar efectos de iteraciones anteriores.
1. Introducción al concepto de Lifetime
Empecemos. Hoy les hablaré sobre el concepto de Lifetime que utilizamos en nuestras aplicaciones. Lifetime es una transmisión en vivo. Les mostraremos lo mismo, pero en vivo. Este es un fragmento de código. Tenemos que escribir todo este código de plantilla una y otra vez. Pero somos ingenieros y nuestro trabajo es automatizar las tareas manuales.
Gracias. Gracias. Empecemos. Y ahora, les presento a Igor y Ned. Gracias por recibirme.
De acuerdo. Entonces, mi nombre es Igor. Soy ingeniero de software en JetBrains. Y hoy les hablaré sobre el concepto simple pero poderoso de Lifetime que utilizamos en nuestras aplicaciones.
Para darles un poco de contexto, les mostraré este fragmento de contenido para las diapositivas. Esta es una diapositiva que ven en la pantalla. Y se llama LiveTime.
Entonces, esto es una transmisión en vivo. Así es, una transmisión en vivo. Es una transmisión en vivo impresionante. Y les mostraremos una transmisión en vivo. Les mostraremos lo mismo, pero en vivo. No es una transmisión en vivo, es una transmisión en vivo. Transmisión en vivo. Transmisión en vivo.
Entonces, este es un fragmento de código. Estoy seguro de que todos ustedes están familiarizados con ellos. Y tal vez, al igual que yo, a veces se han sentido molestos y se han preguntado por qué todo esto no se limpia automáticamente. Tenemos que escribir todo este código de plantilla una y otra vez. Cada vez que agregamos un escuchador de eventos o una suscripción o algo similar.
Y sí. Sé por qué necesitamos hacer esto. Tenemos que tratar de evitar fugas de memoria, errores y a veces incluso riesgos. Estoy seguro de que ninguno de ustedes quiere que su aplicación deje de funcionar porque algo no se eliminó antes. Pero somos ingenieros y nuestro trabajo diario es automatizar las tareas manuales.
2. 'Lifetime' en Ingeniería
En nuestra aplicación, Engineer Brains, utilizamos un objeto simple llamado Lifetime para manejar las limpiezas. Escribes un envoltorio alrededor de una API, vinculas la limpieza a Lifetime y luego lo reutilizas en todas partes. Al llamar a terminate, se llamarán todas tus funciones de limpieza. Lifetime te ayuda a hacer que la lógica de tu código sea más escalable y incluso puedes crear tus propios tipos de lifetimes. Por ejemplo, puedes crear lifetimes secuenciales que terminen el actual cuando creas el siguiente lifetime. Esto puede ser útil en situaciones donde deseas cancelar solicitudes anteriores o limpiar efectos de iteraciones anteriores.
Todo lo que te he mostrado puede ser manejado por algo. En nuestra aplicación, Engineer Brains, llamamos a este algo Lifetime. ¿Qué es Lifetime? En pocas palabras, es solo un objeto simple al que delegamos todas las limpiezas. Como puedes ver, tiene dos estados, ¿está terminado o no? Y siempre puedes agregar cualquier número de funciones que se llamarán después de la terminación.
Parece muy simple y aquí está, cómo lo usamos. Básicamente, necesitas escribir un envoltorio alrededor de alguna API como un escuchador de eventos, una suscripción, etc. y vincular la limpieza a Lifetime. Y sí, aún tienes que escribir tu código de limpieza, pero como puedes ver, solo lo haces una vez. Y luego lo reutilizas en todas partes. Igual que escribir un componente React. Aún parece muy fácil, ¿verdad? Luego solo usas esta función, pasas Lifetime allí y listo.
Pero el punto principal aquí, como puedes ver, aún tienes control externo en un solo lugar. Así que decides cuándo terminar todo esto de una vez, y no necesitas definir la lógica de limpieza en otros lugares porque la tienes aquí. Y así, todo tu código repetitivo ahora se reemplaza por una sola línea. Solo llama a terminate y se llamarán todas tus funciones de limpieza. Así que no necesitas preocuparte por cuándo se eliminará algo, se hace automáticamente por ti. Y como dije, puedes llamar a la terminación de tu lifetime cuando sea necesario. Por ejemplo, puedes vincular la terminación al desmontaje. Es muy básico y estoy seguro de que es muy útil para la mayoría de ustedes. Y debido a su simplicidad, puedes combinarlo con casi todo. Entonces, tener toda la lógica de lifetime en un solo lugar te ayuda a hacer que la lógica de tu código sea más escalable. Incluso puedes extenderlo y crear tus propios tipos de lifetimes. Ahora puedo mostrarte un par de ejemplos advanced de ello. Aquí puedes crear lifetimes secuenciales, que terminan el actual cuando creas el siguiente lifetime. Como en este ejemplo a mi derecha, cada vez que llamas a next se devuelve el nuevo lifetime y se destruye el anterior. Puede ser útil en situaciones en las que disparas la misma solicitud varias veces pero deseas cancelar la anterior. Por ejemplo, también puedes usarlo en un fallo del usuario porque en cada efecto podrías ejecutar nuevos efectos, pero limpias todo de la iteración anterior.
3. Lifetimes Anidados y Ejemplos
Aquí puedes crear lifetimes anidados, lo que te permite construir cadenas y árboles de lifetimes. Esta poderosa característica te permite representar toda tu aplicación como un árbol de lifetimes, gestionando declarativamente las dependencias. Cuando se termina un lifetime, todos sus lifetimes anidados son destruidos. Echa un vistazo a más ejemplos en nuestro repositorio de GitHub y biblioteca de código, y no olvides visitar nuestro producto JetPrints llamado Space. Si quieres algunas pegatinas de JetPrints, es posible que aún tenga una.
Aquí puedes crear lifetimes anidados. Para mí, es lo más poderoso porque puedes crear estas cadenas de lifetimes o incluso árboles de lifetimes. Incluso puedes representar toda la aplicación como un árbol de lifetimes y colocar todas las dependencias de forma declarativa. No necesitas preocuparte por terminarlos todos a la vez. Si se termina un lifetime en cualquier nivel, todos sus lifetimes anidados, y luego anidados, y luego anidados también son destruidos.
Y eso es todo. Eso es todo con los ejemplos. Puedes encontrar más en el repositorio de GitHub, así como en la biblioteca de código y algunos envoltorios. Hay un enlace en la pantalla. Y también hay un enlace a nuestro producto JetPrints llamado Space donde trabajo. Y también, si quieres conseguir algunas pegatinas de JetPrints, creo que aún tengo una.
Y eso es todo. Gracias por escuchar.
Comments