de Ayusch Jain

O foaie de parcurs completă pentru învățarea RxJava

O foaie de parcurs completa pentru invatarea

Acest articol a fost postat inițial aici

Mi-aș dori ca cineva să fi scris un articol de genul acesta când am început călătoria mea de învățare cu RxJava în 2017. Mi-aș dori să fi existat o carte perfectă sau un fel de școală online ceea ce m-a învățat cum să încep cu Rx în mod corect.

A existat atât de multă hype acum RxJava și programarea reactivă în general. Toată lumea pare să o promoveze, dar nimeni nu pare să aibă o idee despre modul în care un programator novice care tocmai începe cu RxJava ar trebui să facă această călătorie.

Toate acestea au un motiv! RxJava are o curbă de învățare abruptă și nu există o singură modalitate de a o stăpâni. Unii preferă documente (care sunt apropiate, apropo), unii preferă cărți despre RxJava cu câteva exemple, în timp ce unii nebuni (inclusiv eu * facepalm *) comit greșeala de a se scufunda direct în cod după vizionarea unui videoclip de pe YouTube al unui discuție de Kaushik Gopal despre cum să începeți cu RxJava și să începeți refactorizarea codului lor.

Ultima metodă este absolut periculoasă și, în loc să vă rezolvați problemele cu Rx, veți ajunge doar să creați altele noi. Așadar, vă sugerez să urmați foaia de parcurs dată mai jos pentru a începe să utilizați RxJava.

ad-banner

Deși acesta nu este în niciun caz singurul mod de a face acest lucru, după o experiență de aproape 1,5 ani cu RxJava (și încă învăț), aș vrea să-mi fi spus cineva aceste lucruri când îmi încep călătoria. Dacă urmați foaia de parcurs dată religios, vă pot asigura că veți avea o bază solidă în RxJava pe care o puteți construi apoi pentru a-și dezlănțui întregul potențial.

Am împărțit întreaga foaie de parcurs în patru etape:

  • Descoperirea: Salutați lumea programării reactive.
  • Deziluzia: Lumea nu este tot soare și curcubee.
  • Eureka!
  • Cerul este limita

Deci, hai să intrăm direct în el.

Faza 1

Descoperirea: salută lumea programării reactive

Aș fi putut, de asemenea, să intitulez această fază „Motivația”, pentru că aceasta este chiar faza inițială în care ați auzit despre RxJava de la un prieten de-al tău sau de la cineva de pe LinkedIn postat despre asta sau pur și simplu se întâmplă să dai peste o bucată de cod cu Observabile care zboară peste tot.

Oricare ar fi cazul, când te uiți pentru prima oară la o bucată de Rutina RxJava (chiar și cea mai simplă), s-ar putea să vă intimidați că toate metodele sunt numite una după alta într-un singur lanț. Dar veți observa că codul arată mai frumos decât oricare altul pe care l-ați văzut vreodată. Și realizează sarcini inimaginabil de complexe cu lanțuri de metode simple în timp ce formați AsynTask și vă gândiți la multiple Retrofit / Volley sună în capul tău.

Sarcini precum efectuarea mai multor apeluri API unul după altul, efectuarea apelurilor API și salvarea într-o bază de date și returnarea unui succes sau a unui eșec etc. realizat în 20-25 de linii de cod. Veți fi intimidați, dar în același timp înclinați să aflați ce este acest instrument și cum puteți începe, de asemenea, să scrieți un astfel de cod.

Deci, pentru a vă începe, iată o listă de lucruri pe care trebuie să le faceți în această fază:

Vă sugerez urmăriți această discuție de Kaushik Gopal cel puțin de două ori (mi-au trebuit 4 reluări să-l iau. Am avut discursul descărcat pe computer) până la complet. După mine, este standardul de aur al oricui dorește să se scufunde în programarea reactivă.

Kaushik Gopal explică frumos nuanțele RxJava și oferă exemple din lumea reală, cu un indiciu de abstractizare asupra tehnicităților absolute, ușor de înțeles de către orice începător. El împarte orice rutină RxJava în 4 construcții de bază (chiar și articolul meu despre RxJava: Înțelegerea noțiunilor de bază RxJava este inspirat de vorbirea sa).

Cu siguranță, la prima încercare, nu veți putea obține ce este exact un observabil și cum funcționează modelul de observator. De aceea vă sugerez să o urmăriți cel puțin de două ori.

Iată despre ce ar trebui să fiți clar din această discuție (cel puțin):

  • Ce este un observabil?
  • Ce este un abonat?
  • Cum lucrează împreună Observables și Subscribers?
  • Ce este un operator (nu funcționalitatea specifică, ci ce face un operator)?

Redă-l de câte ori vrei, dar ar trebui să fii absolut clar cu privire la cele 4 întrebări de mai sus după ce ai terminat. De asemenea, puteți consulta textul disponibil online împreună cu acest videoclip. Nu merge mai departe decât dacă și până nu înțelegi clar nuanțele de mai sus, vei ajunge să fii mai confuz decât înainte.

Odată ce ați terminat, continuați și urmăriți această discuție de Christina Lee:

Urmăriți această discuție o dată, dar vreau să vă concentrați mai ales din 28: 20–32: 50. În aceste 4 minute, ea oferă o explicație absolut frumoasă asupra ceea ce cei mai utilizați doi operatori în orice rutină RxJava, observeOn () și subscribeOn () fac și cum sunt utilizate împreună, folosind un exemplu.

Acești operatori sunt incluși împreună ca unul dintre constructele principale, în 4 constructe ale RxJava explicat de Kaushik Gopal. Și credeți-mă, acestea sunt cu adevărat importante în călătoria dvs. cu programarea reactivă și RxJava în general.

Creați un proiect în Android Studio (dacă sunteți dezvoltator Android) sau orice IDE la alegere și rulați exact același cod pe care Christina îl oferă. Odată ce ați configurat acest lucru, puteți juca schimbând ordinea de observare și subscriere și de a vedea cum se comportă. Încercați să adăugați multipli și vedeți cine domină și care este rezultatul. Veți înțelege bine funcțiile acestor operatori după ce faceți acest exercițiu.

Nu face: YouTube ar recomanda mai multe discuții despre RxJava de către Jake Wharton, dar vă sugerez cu tărie să le ignorați pentru moment. Aceste discuții pot deveni foarte intimidante după ceva timp și cel mai probabil veți renunța undeva între ele și chiar veți renunța la RxJava cu totul. Deci, stai departe de ei pentru moment.

Faza 2

Deziluzia: lumea nu este tot soare și curcubee

Această fază ar putea fi denumită și „Lupta”. Aceasta este faza în care trebuie să începeți să vă murdăriți mâinile scriind un cod RxJava real.

Aș sugera să începeți prin a efectua câteva apeluri API cu RxJava și am publicat deja o postare pentru același scop exact: Rețea cu arhitectura Retrofit-RxJava-MVP

Înțelegeți ce se întâmplă aici. Probabil că ați făcut deja câteva apeluri API în călătoria dvs. de dezvoltare Android folosind Retrofit / Volley. Dar acest articol va explica cum să le asamblați corespunzător pentru a obține separarea preocupărilor și pentru a vă face codul mai modular și, în cele din urmă, ușor de înțeles și de scalat într-o etapă ulterioară.

De asemenea, include utilizarea modelului MVP, care este foarte simplu, dar puteți omite acest lucru dacă devine prea tehnic. Doar concentrați-vă pe crearea adaptorului, a interfeței de servicii API și a UserTask. Fiți siguri că totul este doar un cod Android simplu. Puteți invoca UserTask de oriunde și obține rezultatul într-un apel invers.

După ce ați făcut acest lucru, veți obține o idee despre cum este să lucrați cu RxJava.

Apoi, ar trebui să dezvoltați o aplicație care implică rețeaua. Ai putea să folosești serviciul web fakeJson / să creezi un client twitter / să consumi un API de tomate putrede sau orice altceva care implică o rețea. Veți afla cum diferiți operatori, cum ar fi Hartă și FlatMap fii la îndemână în timp ce îți transformi observabilele în ceva din cerința ta.

Pe măsură ce faceți acest lucru, veți începe să vă simțiți mai încrezători în rutinele RxJava și veți observa că majoritatea codului este același în aceste aplicații. Desigur, vor exista diferiți operatori folosiți și o diferență în modelele dvs. Dar esența generală este oarecum similară.

Acum ești pregătit pentru Faza 3 și să ajungi la acel moment Eureka?

Faza 3

Eureka!

Aceasta este faza în care veți ieși din zona dvs. de confort și veți începe să explorați ce poate face RxJava pentru dvs. Android aplicație, mai degrabă decât doar de rețea. Aici veți afla despre arta gestionării de stat cu RxJava și cum puteți Rxify aproape tot ce există în codul dvs. În această secțiune, vă voi împinge să începeți administrarea de stat cu RxJava.

Acesta este și punctul în care sunteți gata să urmăriți toate A lui Jake Wharton vorbește pe RxJava. De fapt, aceasta va fi sarcina dvs. în această fază, dar mai întâi, să înțelegem ce este managementul de stat.

Ce este managementul de stat?

Să ne gândim la un exemplu. Spuneți, aveți o aplicație simplă de conectare / înscriere în care solicitați utilizatorului numele de utilizator și parola și când face clic pe un buton, îl conectați / direct la o pagină de înscriere.

Acum, de îndată ce utilizatorul introduce datele sale și face clic pe butonul de trimitere, este afișat un încărcător în timp ce aplicația trimite datele către un serviciu de backend și așteaptă răspunsul. Putem spune că, în prezent, aplicația noastră se află într-o stare „inProgress”.

Pe măsură ce rezultatul este returnat, aplicația revine la „Inactiv” stat.

Pentru a detalia mai departe, să vorbim despre butonul de trimitere. Când câmpurile de text sunt goale, adică utilizatorul nu a introdus încă nimic, butonul ar trebui să fie dezactivat. Deci, „dezactivat” devine o stare a butonului. Când utilizatorul a introdus informațiile și câmpurile sunt validate, butonul ar trebui să fie în starea „activat”.

Deci, vedeți, tot ceea ce vedeți pe ecran, există într-o anumită stare. Chiar din acel buton, în bara de progres, totul se află într-o anumită stare.

Totul e bine, dar ce să faci acum?

Iată ce vreau să faci.

start urmărind această discuție despre managementul statului de către Jake Wharton:

Discuția asta este pentru avansat dezvoltatorii și a trebuit să-l urmărim de cel puțin 10 ori pentru a-mi înfășura capul în jurul a ceea ce se întâmpla. Dar vizionarea unui videoclip singur nu te va face un profesionist la RxJava. Va trebui să vă gestionați aplicațiile folosind RxJava.

Pentru a practica cu managementul statului, aș sugera să ridicați orice idee simplă / un singur ecran și să începeți gestionarea statului cu RxJava. De exemplu, dacă aplicația dvs. include un ecran de conectare / înscriere, puteți efectua gestionarea stării sale utilizând RxJava așa cum s-a menționat mai sus.

Iată câteva idei pentru tine:

  • Dezvoltă o aplicație de autentificare / înregistrare. După ce utilizatorul se autentifică, consumați API-ul Rotten Tomatoes. Permiteți o funcționalitate de căutare, astfel încât utilizatorul să poată căuta filme după bunul său plac. În toate acestea, barele de progres și animațiile trebuie să fie stări care ar fi gestionate în fluxurile RxJava. Rx ar fi, de asemenea, utilizat pentru efectuarea apelurilor API.
  • Verifică acest repertoriu de Kaushik Gopal care include un exemplu de validare a formularului cu RxJava. Clonați-l și încercați să înțelegeți codul. Odată ce te simți confortabil, începe să-l implementezi singur. Gândiți-vă la toate stările pe care le-ați putea adăuga pentru a crește complexitatea. De exemplu, o casetă de selectare pentru a dezvălui parola.

Veți obține cu siguranță momentul dvs. Eureka în această fază în care vă dați seama de vastul potențial al RxJava și cum puteți face orice cu el și vă puteți face codul mai îngrijit.

Faza 4

Cerul este limita

Voi lăsa această secțiune necompletată pentru dvs. Acum depinde de voi să-mi spuneți despre toate modurile creative pe care le-ați folosit RxJava în codul tău și modul în care RxJava ți-a făcut viața mai ușoară decât înainte. Un lucru pe care l-am observat când am început să scriu aceste bloguri este că acestea m-au ajutat cu siguranță să devin un dezvoltator Android mai bun, deoarece sunt responsabil pentru tot ceea ce postez.

În această postare, am împărtășit tot ce a funcționat pentru mine și ceea ce cred că va funcționa pentru tine. Dacă aveți sugestii, anunțați-mă în secțiunea de comentarii de mai jos. Vă îndemn să împărtășiți învățăturile cu toată lumea și să vă ajutați reciproc să crească și să deveniți ingineri mai buni.

Îți place ce ai citit? Nu uitați să distribuiți această postare pe Facebook, Whatsapp, și LinkedIn.

Poți să mă urmărești mai departe LinkedIn, Quora, Stare de nervozitate, și Instagram unde eu Răspuns întrebări legate de Dezvoltare mobilă, în special Android și Flutter.

Dacă doriți să fiți la curent cu toate cele mai recente articole, abonați-vă la buletinul informativ săptămânal introducând adresa dvs. de e-mail în formularul din secțiunea din dreapta sus a acestei pagini.