
El conocimiento es bueno, simplemente genial. Pero también necesitamos práctica para poder utilizar los datos obtenidos, transfiriéndolos del estado de "almacenamiento pasivo" al estado de "uso activo". No importa qué tan buena sea la capacitación teórica, se requiere más trabajo "en el campo". Lo anterior se aplica a prácticamente cualquier campo de estudio, incluido, por supuesto, el desarrollo de software.
Este año, GeekBrains, como parte del departamento de desarrollo móvil de la universidad en línea GeekUniversity, comenzó a trabajar con la agencia interactiva AGIMA, cuyo equipo son desarrolladores profesionales (haciendo proyectos complejos de alta carga, portales corporativos y aplicaciones móviles, eso es todo). AGIMA y GeekBrains han creado un curso electivo para una inmersión profunda en los problemas prácticos del desarrollo de aplicaciones móviles.
El otro día hablamos con Igor Vedeneev, un especialista en iOS, y Alexander Tizik, que se especializa en Android. Gracias a ellos, la materia optativa sobre desarrollo móvil se enriqueció con un
curso especial práctico
sobre el marco y las
rutinas RxSwift en Kotlin . En este artículo, los desarrolladores hablan sobre la importancia de cada dirección para los programadores.
Programación reactiva en iOS usando RxSwift como ejemplo
Profesor opcional Igor Vedeneev: "Con RxSwift su aplicación volará"¿Qué información reciben los estudiantes en las clases optativas?No solo hablamos sobre las capacidades del marco, sino que también mostramos cómo usarlo en el paquete clásico MVVM + RxSwift. También se consideran varios ejemplos prácticos. Para consolidar los datos recibidos, escribimos una aplicación que esté lo más cerca posible de las condiciones de trabajo de campo. Será una aplicación de búsqueda de música con la
API de búsqueda de iTunes . Allí aplicaremos todas las mejores prácticas, además consideraremos una opción más simple para usar RxSwift en el paradigma MVC.
RxSwift: ¿por qué este marco para el programador iOS, cómo facilita la vida al desarrollador?RxSwift optimiza el trabajo con secuencias de eventos y relaciones entre objetos. El ejemplo más simple y obvio son los aglutinantes: por ejemplo, puede actualizar la interfaz simplemente estableciendo nuevos valores en una variable en viewModel. Por lo tanto, la interfaz se vuelve basada en datos. Además, RxSwift le permite describir el sistema en un estilo declarativo, lo que le permite optimizar el código y mejorar la legibilidad. Todo esto ayuda a desarrollar aplicaciones de manera más eficiente.
Para el desarrollador, el conocimiento del marco también es una buena ventaja en el currículum, ya que se aprecia una comprensión de la programación reactiva, y especialmente la experiencia con RxSwift, en el mercado.
¿Por qué elegir este marco y no otros?RxSwift tiene la comunidad más grande. Es decir, hay más posibilidades de que el problema que enfrenta el desarrollador ya haya sido resuelto por alguien. También una gran cantidad de carpetas fuera de la caja. Además, RxSwift es parte de ReactiveX. Esto significa que hay un análogo para Android, por ejemplo (RxJava, RxKotlin), y sus colegas pueden hablar el mismo idioma entre sí, a pesar de que algunos funcionan con iOS, otros con Android.
El marco se actualiza constantemente, se corrigen errores menores, se agrega soporte para chips de las nuevas versiones de Swift, se agregan nuevas carpetas. Como RxSwift es de código abierto, puede seguir todos los cambios. Además, es posible agregarlos usted mismo.
¿Dónde usar RxSwift?- Fijaciones Como regla general, aquí estamos hablando de la interfaz de usuario, la capacidad de cambiar la interfaz de usuario, como si reaccionara a los cambios de datos, y no le diga explícitamente a la interfaz que es hora de actualizar.
- Enlace de componentes y operaciones. Inmediatamente un ejemplo. Necesitamos obtener una lista de datos de la red. De hecho, esta no es una operación tan simple. Para hacer esto, envíe una solicitud, asigne la respuesta a una matriz de objetos, guárdela en la base de datos y envíela a la IU. Los responsables de realizar estas operaciones, como regla, son componentes diferentes (¿amamos y seguimos los principios de SOLID ?). Al tener a mano una herramienta como RxSwift, es posible describir QUÉ hará el sistema y CÓMO lo hará: será en otros lugares. Es por esto que se logra una mejor organización del código y se aumenta la legibilidad. Relativamente hablando, el código se puede dividir en una tabla de contenido y el libro en sí.
Corutinas en Kotlin
Profesor opcional Alexander Tizik: "El desarrollo moderno requiere medios técnicos modernos"¿Qué se enseñará en la facultad GeekBrains como parte del trimestre de marca?Teoría, comparaciones con otros enfoques, ejemplos prácticos en Kotlin puro y en el modelo de aplicación de Android. Con respecto a la práctica, a los estudiantes se les mostrará una aplicación en la que todo está vinculado a las rutinas. El hecho es que la mayoría de las aplicaciones son computación asíncrona continua y paralela. Pero las rutinas de Kotlin permiten que el código confuso, heterogéneo o demasiado complejo y exigente en términos de rendimiento se reduzca a un estilo único y fácil de entender, obteniendo la ejecución y el rendimiento correctos.
Aprenderemos cómo escribir código idiomático en corutinas, lo que resuelve problemas prácticos y es comprensible a primera vista, incluso sin un conocimiento profundo de cómo funcionan las corutinas (lo que no se puede decir sobre bibliotecas como RxJava). También entenderemos cómo usar conceptos más complejos, como un modelo de actor, para resolver tareas más complejas, como el almacén de datos en el concepto MVI.
Por cierto, más buenas noticias. Mientras se grababa lo opcional, se realizó una actualización de la biblioteca Kotlin Coroutines, en la que apareció la clase
Flow
, un análogo de los tipos Flowable y
Observable
de RxJava. La actualización esencialmente hace que la función de las rutinas se complete desde el punto de vista del desarrollador de la aplicación. Es cierto que todavía hay mucho espacio para el desarrollo: a pesar del hecho de que gracias al soporte de coroutine en kotlin / native, ya es posible escribir aplicaciones multiplataforma en Kotlin y no sufrir la ausencia de RxJava o análogos en Kotlin puro, el soporte para coroutine en kotlin / native aún no está completo. Por ejemplo, no existe el concepto de actores. En general, el equipo de Kotlin tiene planes de brindar apoyo a actores más complejos en todas las plataformas.
Kotlin Coroutines: ¿cómo ayudan al desarrollador de Kotlin?Las rutinas brindan una excelente oportunidad para escribir código legible, compatible y seguro, asíncrono y de "concurrencia". También puede crear adaptadores para otros marcos y enfoques asincrónicos que ya se pueden usar en la base de código.
¿Cómo difieren las Coroutines de las corrientes?El equipo de Kotlin llama a las corutinas flujos ligeros. Además, la rutina puede devolver algún valor, porque, en esencia, la rutina es un cálculo suspendido. No depende directamente de los subprocesos del sistema, los subprocesos solo ejecutan rutinas.
¿Qué problemas prácticos se pueden resolver con Corutin, que no pueden o son difíciles de resolver con la ayuda de Kotlin "limpio"?Cualquier tarea asincrónica, paralela y "competitiva" se resuelve bien con la ayuda de la rutina, ya sea procesando clics de usuario, yendo a la red o suscribiéndose a actualizaciones de la base de datos.
En Kotlin puro, estas tareas se resuelven de la misma manera que en Java, con la ayuda de miles de marcos, cada uno de los cuales tiene sus pros y sus contras, pero ninguno de ellos tiene soporte a nivel de lenguaje.
Como conclusión, vale la pena decir que ambas asignaturas optativas (y los cursos principales también) se actualizan de acuerdo con los cambios en las condiciones externas. Si aparecen actualizaciones importantes en idiomas o marcos, los maestros tienen esto en cuenta y modifican el programa. Todo esto le permite mantenerse al tanto del proceso de desarrollo, si puedo decirlo.