Raskelt teenitud Androidi programmeerimiskogemused

See postitus, nagu ütleb Kent Beck oma raamatus „Rakendamise mustrid“, „põhineb üsna habras eeldusel, et oluline on hea kood ...“. Kuid me kõik teame, et puhas kood on oluline, kuna oleme selle puudumisega nii kaua pidanud hakkama saama. Ja nii ka Kent.

Kent Beck

Messi omamise kogukulud

Mõni aasta tagasi, nagu iga naiivne Androidi arendaja, kes töötab varases staadiumis Indias, proovisin “häkkida” pärismaailma probleeme, “häirida tööstust” ja panna “mõlg universumis”. Ilma hoolimata heast tarkvaradisainist või arhitektuurist maailmas hakkasin kirjutama koodi, et ehitada Androidi rakendus, millest saaks ühel päeval India suurimaid terviseravi rakendusi.

Sprint pärast sprindit, häkkimine pärast häkkimist, funktsioonid ehitati hullu kiirustades. Ehitage. Mõõda. Õppige. Turule jõudmise aeg oli oluline ja iga päev oli oluline. Aeg lendas, me kasvasime kiirusega 1 meeskonnaliige iga 6 kuu tagant ja rakendus oli jõudnud miljoni allalaadimise piirini.

Meie rakenduse Google Play poe allalaadimine ja hinnang.

Selleks ajaks oli rakendus lakanud olemast triviaalne ja sellest oli saanud mitme üürilisega klient, kui see on isegi asi. Funktsioonid, mis võtaksid nüüd alustades tunde, võtsid päevi, mõnikord nädalaid. Igas tegevuses oli üle 1000 spagetikoodi rea, kuna Android ei muretse oma olemuselt murede lahususe pärast liiga palju. Jama omamise kogukulud olid meid märkimisväärselt aeglustanud.

Androidi konsool

Kood nägi kole välja, tegevused haldasid kõike:

  • Keermestamine
  • I / O
  • Arvutamine
  • Paigutused
  • Seadista muudatused
  • Mis mitte

Lõppude lõpuks on tegevused kontrollerid, eks? Või on need vaated? Ma ei teadnud enam.

MVC

Taeva suur kujundus

Me pidime rakenduse kavandama nii, et koodirea muutmine kuskil mujal midagi ei rikuks. Rakendus pidi olema, nagu onu Bob ütleb: “vastupidav, kuid mitte jäik, paindlik, kuid mitte habras”.

Robert “onu Bob” Martin

See oli siis, kui minu mentor ja sõber Kashif Razzaqui liitus meeskonnaga, et aidata meil jama leevendada. Suurejoonelist ümberkujundamist ei juhtunud kunagi, kuid me mõtlesime uuesti oma koodist välja:

  • Lisasime kihi “teenus” ja teisaldasime neisse UI-koodid ühe teenuse korraga.
  • Chucked AsyncTasks ja liikus Guava kasutades ListenableFutures.
  • Andsime OkHttpile alla AsyncHttpClienti.
  • Kuid veelgi tähtsam on see, et hakkasime lugema palju: puhas kood, puhas arhitektuur, SOLID, DRY, praktiline programmeerija, Java samaaegne praktika praktikas, domeenipõhine disain jne.

Varsti hakkasime nägema oma pingutuste eeliseid. Tootlikkus kasvas, kirjutasime asju kiiremini, kõik olid rahul.

See kestis seni, kuni me ühendasime oma rakendused ja kõik põrgu purunes kaotada. Ainult täiendava teenusekihi omamine ei lõiganud seda.

Puhta koodi kunst

Pärast Onu Bobi videote vaatamist Clean Architecture korduvalt ja palju Androidi rakenduste arhitektuuri lugedes otsustasin katsetada MVP kujundusmustrit ja RxJavat.

Mõni päev pärast eksperimenteerimist otsustasime minna RxJava peale ja rakendada MVP programmi Clean Architecture abil. Veendusime, et kapslisime kõik kihid liideste taha ja eraldasime mured hästi.

  • Vaade, mida tavaliselt rakendab fragment, sisaldab viide saatejuhile. Ainus, mida vaade teeb, on helistada meetodilt Presenter igal meetodil, kui on mõni liidesetoiming.
  • Saatejuht vastutab keskmise tegijana vaate ja mudeli vahel. See hangib mudelt andmed ja tagastab need vormindatud vaatesse. Kuid erinevalt tüüpilisest MVC-st otsustab see ka, mis juhtub, kui suhtlete vaatega.
  • Mudel on vaid värav domeenikihi või äriloogika juurde.
  • Interaktor tegeleb I / O-ga ja on andmete pakkuja, mida kuvatakse vaates.

Nüüd on palju lihtsam ühe kihi välja vahetada täiesti uue teostusega. UI, mis on Androidi rakenduste arenduse lahutamatu osa, ümberkujundamine on muutunud palju lihtsamaks. Asjad saavad lõpuks kiiresti liikuda purunemata.

Poiste skautide reegel

Koodi kirjutamiseks ei piisa, kood tuleb aja jooksul puhtana hoida. Elu tõsiasi on see, et tarkvaral on kalduvus entroopiale. Oleme kõik näinud koodi mädanemist ja aja jooksul lagunevat, nii et laenasime skaudide lihtsa reegli: "Jätke laagriplats puhtamaks, kui leidsite."

Kui me kõik kontrollisime oma koodi veidi puhtamalt kui siis, kui seda kontrollisime, ei saanud kood lihtsalt mädaneda. Koristamine ei pea olema midagi suurt. Muutke parem ühe muutuja nime, murdke üks funktsioon, mis on pisut liiga suur, kõrvaldage üks väike dubleerimine, puhastage üks liitlause korral.

Järeldus

Meie viis skaleeritava rakenduse ehitamiseks ei pruugi olla „õige” ja te ei pruugi selle postitusega nõustuda. Lõppude lõpuks ei ole kõik võitluskunstnikud ühel meelel parima võitluskunsti või parima tehnika osas;)

MVP-le on palju erinevaid lähenemisviise ja palju huvitavaid lahendusi selle kohandamiseks Androidiga. Ainus asjaolu, mida me ei saa eitada, on see, et puhas kood on oluline ja te ei saa seda lihtsalt vaiba alla pühkida.

See postitus laenab suuresti onu Bobi puhast koodi ja varastab pealkirja Kashifi Droidconi jutust aastast 2011.

Kui puhas kood on teie jaoks oluline, siis vestlegem :) Twitter: @_arunsasi LinkedIn: https://www.linkedin.com/in/arunsasidharan

Kui teile see postitus meeldis, siis palun lööge väikse südamega! ❤