Përvojat e Programimit Android me Fitim të Shkurtër

Ky postim, siç thotë Kent Beck në librin e tij Modelet e Implementimit, "... bazohet në një premisë mjaft të brishtë që kodi i mirë ka rëndësi ...". Por ne të gjithë e dimë se kodi i pastër ka rëndësi pasi kemi pasur të merremi për kaq gjatë me mungesën e tij. Dhe kështu vepron Kenti.

Kent Beck

Kostoja totale e zotërimit të një rrëmuje

Disa vjet më parë, si çdo zhvillues naiv i Android që punonte në fillimet e fazës së hershme në Indi, u përpoqa të "hidhja" problemet e botës reale, të "prishja industrinë" dhe të vendosja një "gjurmë në univers". Pa një kujdes në botë për hartimin e mirë të softuerit ose arkitekturën, unë fillova të shkruaj kod për të ndërtuar një aplikacion Android që një ditë do të bëhej një nga aplikacionet më të mëdha të kujdesit për shëndetin e konsumatorit në Indi.

Sprint pas sprint, hack pas hack, tiparet u ndërtuan në një nxitim të çmendur. Ndërtuar. Masa. Mëso. Koha për treg ishte i rëndësishëm dhe kishte rëndësi çdo ditë. Koha kaloi, ne po rriteshim me nivelin 1 anëtar të ekipit çdo 6 muaj dhe aplikacioni kishte arritur në shenjën e miliona shkarkimeve.

Shkarkime dhe vlerësime të dyqanit Google Play të aplikacionit tonë.

Në këtë kohë, aplikacioni kishte ndaluar të ishte i parëndësishëm dhe ai ishte bërë një klient me shumë qiramarrës, nëse kjo është edhe një gjë. Karakteristikat që do të merrnin orë kur filluam tani, merrnin ditë, ndonjëherë javë. Everydo aktivitet ishte 1000+ rreshta të kodit të spageti pasi Androidi në vetvete nuk shqetësohet shumë për ndarjen e shqetësimeve. Kostoja totale e mbajtjes së një rrëmuje na kishte ngadalësuar ndjeshëm.

The Conundrum Android

Kodi dukej i shëmtuar, Aktivitetet menaxhuan gjithçka:

  • filetim
  • I / O
  • llogaritje
  • Layouts
  • Konfiguroni ndryshimet
  • Farë jo

Në fund të fundit, aktivitetet janë kontrollues, apo jo? Apo janë shikime? Nuk e dija më.

MVC

Redesign Grand The Sky Në Sky

Ne kemi nevojë për të hartuar aplikacionin në një mënyrë që ndryshimi i një linje kodesh diku nuk prish diçka tjetër diku. Aplikacioni duhej të ishte, siç thotë Xha Bob, "i fortë, por jo i ngurtë, fleksibël, por jo i brishtë".

Robert

Kjo ishte kur mentori dhe shoku im Kashif Razzaqui u bashkuan me ekipin për të na ndihmuar të lehtësojmë rrëmujën. Dizenjimi madhështor kurrë nuk ka ndodhur, por ne e rindërtuam ferrin nga kodi ynë:

  • Ne shtuam një shtresë "shërbimi" dhe transferuam të gjithë kodin jo-UI në to, një shërbim në një kohë.
  • Ne chucked AsyncTasks dhe kaluam në ListenableFutures duke përdorur Guava.
  • Ne hodhëm AsyncHttpClient për OkHttp.
  • Por, më e rëndësishmja, kemi filluar të lexojmë shumë: Kodi i Pastër, Arkitektura e Pastër, SOLIDI, DRY, Programuesi Pragmatik, Java Concurrency In Practice, Design Domain Driven, etj.

Së shpejti filluam të shohim përfitimet e përpjekjeve tona. Prodhueshmëria u rrit, ne po i shkruanim gjërat më shpejt, të gjithë ishin të lumtur.

Kjo ndodhte derisa të unifikuam aplikacionet tona dhe të gjithë xhehenemet u shkatërruan. Vetëm të kesh një shtresë shtesë shërbimi nuk e shkurtoi atë.

Arti i Kodit të Pastër

Pasi shikova videot e Xha Bobit në Arkitekturën e Pastër disa herë dhe lexova shumë në arkitekturën e aplikacionit Android, vendosa të eksperimentoj me modelin e projektimit MVP dhe RxJava.

Disa ditë në eksperiment, vendosëm të kalojmë në RxJava dhe të zbatojmë MVP duke përdorur Architecture Clean. Ne u siguruam se i kemi mbyllur të gjitha shtresat pas ndërfaqeve dhe shqetësimet e ndara mirë.

  • Pamja, e zbatuar zakonisht nga një Fragment, përmban një referencë për prezantuesin. E vetmja gjë që pamja do të bëjë është të thërrasni një metodë nga Prezantuesi sa herë që ka një veprim ndërfaqe.
  • Prezantuesi është përgjegjës për të vepruar si njeriu i mesëm midis View dhe Model. Ai tërheq të dhënat nga Model dhe i kthen ato të formatuara në Pamje. Por ndryshe nga MVC tipike, ai gjithashtu vendos se çfarë ndodh kur bashkëveproni me Pamjen.
  • Modeli është vetëm hyrja në shtresën e domenit ose logjikën e biznesit.
  • Interactor merret me I / O dhe është ofruesi i të dhënave që do të shfaqen në Pamje.

Tani është shumë më e lehtë të fikni një shtresë me një zbatim plotësisht të ri. Ri-hartimi i UI, një pjesë dhe pako e zhvillimit të aplikacioneve Android, është bërë shumë më e lehtë. Gjërat më në fund mund të lëvizin shpejt pa u prishur.

Rregulla e skautëve të djemve

Nuk është e mjaftueshme për të shkruar mirë kodin, kodi duhet të mbahet i pastër me kalimin e kohës. Fakti i jetës është se softueri ka një tendencë për entropi. Të gjithë kemi parë kalbjen dhe degradimin e kodit me kalimin e kohës, kështu që kemi huazuar rregullin e thjeshtë të skautëve të djemve: "Lini kampin më të pastër nga sa e gjetët."

Nëse të gjithë kontrolluam në kodin tonë pak më të pastër sesa kur e kontrolluam, kodi thjesht nuk mund të kalbet. Pastrimi nuk duhet të jetë diçka e madhe. Ndryshoni një emër të ndryshueshëm për më mirë, prishni një funksion që është pak a shumë i madh, eliminoni një kopje të vogël, pastroni një përbërës nëse thoni.

përfundim

Mënyra jonë për të ndërtuar një aplikacion të shkallëzuar mund të mos jetë "e saktë" dhe ju mund të mos jeni dakord me këtë postim. Në fund të fundit, jo të gjithë artistët luftarak bien dakord për artin më të mirë ushtarak, ose teknikën më të mirë brenda një;)

Ka shumë qasje të ndryshme ndaj MVP dhe shumë zgjidhje interesante për ta përshtatur atë me Android. Një fakt që ne nuk mund ta mohojmë është se Kodi i Pastër ka rëndësi dhe thjesht nuk mund ta fshish nën një qilim.

Ky post huazohet shumë nga Kodi i Pastër i Xha Bobit dhe i vjedh titullin nga fjalimi i Droidcon i Kashif nga 2011.

Nëse Kodi i Pastër ka rëndësi për ju, le të bisedojmë :) Twitter: @_arunsasi LinkedIn: https://www.linkedin.com/in/arunsasidharan

Nëse ju pëlqeu ky postim, ju lutemi godisni zemrën e vogël! ❤