RxSwift e coroutine in Kotlin: un'opzione facoltativa nello sviluppo mobile di AGIMA e GeekBrains

RxSwift e coroutine in Kotlin: un'opzione facoltativa nello sviluppo mobile di AGIMA e GeekBrains

La conoscenza è buona, semplicemente fantastica. Ma serve anche pratica per poter utilizzare i dati ricevuti, trasferendoli dallo stato di “conservazione passiva” allo stato di “utilizzo attivo”. Non importa quanto buona sia la formazione teorica, il lavoro “sul campo” è comunque necessario. Quanto sopra si applica a quasi tutti i campi di studio, compreso, ovviamente, lo sviluppo di software.

Quest'anno, GeekBrains, come parte della facoltà di sviluppo mobile dell'università online GeekUniversity, ha iniziato a collaborare con l'agenzia interattiva AGIMA, il cui team è composto da sviluppatori professionisti (creano progetti complessi ad alto carico, portali aziendali e applicazioni mobili, tutto qui). AGIMA e GeekBrains hanno creato un corso facoltativo per approfondire le questioni pratiche dello sviluppo di applicazioni mobili.

L'altro giorno abbiamo parlato con Igor Vedeneev, uno specialista iOS, e Alexander Tizik, specializzato in Android. Grazie a loro, la parte facoltativa sullo sviluppo mobile si è arricchita di quella pratica corso speciale sul framework RxSwift и coroutine in Kotlin. In questo articolo, gli sviluppatori parlano dell'importanza di ciascuna area per i programmatori.

Programmazione reattiva in iOS utilizzando RxSwift come esempio

RxSwift e coroutine in Kotlin: un'opzione facoltativa nello sviluppo mobile di AGIMA e GeekBrains
Insegnante elettivo Igor Vedeneev: “Con RxSwift la tua candidatura volerà”

Quali informazioni ricevono gli studenti durante il corso facoltativo?

Parliamo non solo delle capacità del framework, ma mostriamo anche come utilizzarlo nella classica combinazione MVVM + RxSwift. Vengono inoltre discussi diversi esempi pratici. Per consolidare i dati ottenuti, scriviamo un'applicazione che si avvicini il più possibile alle condizioni operative sul campo. Questa sarà un'applicazione di ricerca musicale che utilizza API di ricerca di iTunes. Lì applicheremo tutte le migliori pratiche, oltre a considerare un'opzione più semplice per l'utilizzo di RxSwift nel paradigma MVC.

RxSwift: perché un programmatore iOS ha bisogno di questo framework, come può semplificare la vita a uno sviluppatore?

Le semplificazioni RxSwift funzionano con flussi di eventi e connessioni tra oggetti. L'esempio più semplice ed evidente sono i bind: ad esempio è possibile aggiornare l'interfaccia semplicemente impostando nuovi valori in una variabile nel viewModel. Pertanto, l'interfaccia diventa guidata dai dati. Inoltre, RxSwift ti consente di descrivere il sistema in uno stile dichiarativo, che ti consente di organizzare il tuo codice e aumentare la leggibilità. Tutto ciò aiuta a sviluppare le applicazioni in modo più efficiente.

Per uno sviluppatore, anche la conoscenza del framework è un buon vantaggio nel curriculum, poiché la comprensione della programmazione reattiva e in particolare l'esperienza con RxSwift sono apprezzate sul mercato.

Perché scegliere questo particolare quadro rispetto ad altri?

RxSwift ha la comunità più grande. Cioè, c'è una maggiore possibilità che il problema che lo sviluppatore sta affrontando sia già stato risolto da qualcuno. Anche un gran numero di attacchi pronti all'uso. Inoltre, RxSwift fa parte di ReactiveX. Ciò significa che esiste un analogo per Android, ad esempio (RxJava, RxKotlin), e che i colleghi del workshop possono parlare la stessa lingua tra loro, nonostante alcuni funzionino con iOS, altri con Android.

Il framework viene costantemente aggiornato, vengono corretti bug minori, viene aggiunto il supporto per le funzionalità delle nuove versioni di Swift e vengono aggiunti nuovi collegamenti. Poiché RxSwift è open source, puoi seguire tutte le modifiche. Inoltre, è possibile aggiungerli tu stesso.

Dove dovrebbe essere utilizzato RxSwift?

  1. Legami. Di norma, stiamo parlando dell'interfaccia utente, della possibilità di modificare l'interfaccia utente, come se reagisse alle modifiche dei dati e non dicesse esplicitamente all'interfaccia che è ora di aggiornare.
  2. Relazione tra componenti e operazioni. Solo un esempio. Dobbiamo ottenere un elenco di dati dalla rete. In realtà, questa non è un'operazione così semplice. Per fare ciò, è necessario inviare una richiesta, mappare la risposta in un array di oggetti, salvarla nel database e inviarla all'interfaccia utente. Di norma, diversi componenti sono responsabili dell'esecuzione di queste operazioni (amiamo e seguiamo i principi SOLID?). Avendo uno strumento come RxSwift a portata di mano, diventa possibile descrivere COSA farà il sistema e COME lo farà in altri posti. È grazie a ciò che si ottiene una migliore organizzazione del codice e aumenta la leggibilità. Relativamente parlando, il codice può essere suddiviso in un sommario e nel libro stesso.

Coroutine a Kotlin

RxSwift e coroutine in Kotlin: un'opzione facoltativa nello sviluppo mobile di AGIMA e GeekBrains
Il docente del corso facoltativo Alexander Tizik: “Lo sviluppo moderno richiede mezzi tecnici moderni”

Cosa verrà insegnato alla facoltà di GeekBrains nell'ambito del trimestre del marchio?

Teoria, confronti con altri approcci, esempi pratici in puro Kotlin e nel modello applicativo Android. Per quanto riguarda la pratica, agli studenti verrà mostrata un'applicazione in cui tutto è legato alle coroutine. Il fatto è che la maggior parte delle applicazioni sono completamente asincrone e parallele. Ma le coroutine di Kotlin consentono di ridurre codice confuso, eterogeneo o eccessivamente complesso e impegnativo in termini di prestazioni a un unico stile di facile comprensione, ottenendo vantaggi in termini di esecuzione e prestazioni corrette.

Impareremo a scrivere codice idiomatico in coroutine che risolva problemi pratici e sia comprensibile a prima vista anche senza una conoscenza approfondita di come funzionano le coroutine (cosa che non si può dire di librerie come RxJava). Comprenderemo anche come utilizzare concetti più complessi, come il modello ad attori, per risolvere problemi più complessi, come il data warehouse nel concetto MVI.

A proposito, altre buone notizie. Mentre veniva registrato l'elettivo, è stato rilasciato un aggiornamento della libreria Kotlin Coroutines, in cui appariva la classe Flow - analogo dei tipi Flowable и Observable da RxJava. L'aggiornamento essenzialmente completa la funzionalità delle coroutine dal punto di vista dello sviluppatore dell'applicazione. È vero, c'è ancora margine di miglioramento: nonostante grazie al supporto delle coroutine in kotlin/native sia già possibile scrivere applicazioni multipiattaforma in Kotlin e non soffrire della mancanza di RxJava o analoghi in Kotlin puro, il supporto per le coroutine in kotlin/native non è ancora completo. Ad esempio, non esiste il concetto di attori. In generale, il team di Kotlin ha in programma di supportare attori più complessi su tutte le piattaforme.

Kotlin Coroutine: come aiutano uno sviluppatore Kotlin?

Le coroutine offrono una grande opportunità per scrivere codice che sia leggibile, gestibile e sicuro, asincrono e simultaneo. Puoi anche creare adattatori per altri framework e approcci asincroni che potrebbero già essere utilizzati nella codebase.

In che modo le Coroutine sono diverse dai thread?

Il team di Kotlin chiama le coroutine thread leggeri. Inoltre, una coroutine può restituire un certo valore perché, nella sua essenza, una coroutine è un calcolo sospeso. Non dipende direttamente dai thread di sistema; i thread eseguono solo coroutine.

Quali problemi pratici possono essere risolti utilizzando Coroutine, che non possono o sono difficili da risolvere utilizzando Kotlin “puro”?

Qualsiasi attività asincrona, parallela e "competitiva" è ben risolta utilizzando le coroutine, sia che si tratti di elaborare i clic degli utenti, di andare online o di iscriversi agli aggiornamenti da un database.

In Kotlin puro, questi problemi vengono risolti allo stesso modo di Java, con l'aiuto di migliaia di framework, ognuno dei quali ha i suoi pro e contro, ma nessuno di essi ha il supporto a livello di linguaggio.

In conclusione, vale la pena dire che entrambi i corsi opzionali (e anche i corsi principali) vengono aggiornati in base ai cambiamenti delle condizioni esterne. Se compaiono aggiornamenti importanti nelle lingue o nei framework, gli insegnanti ne tengono conto e modificano il programma. Tutto ciò ti consente di tenere il polso del processo di sviluppo, per così dire.

Fonte: habr.com

Aggiungi un commento