Таҷрибаҳои барномасозии андроид

Ин вазифа, ба монанди Кент Бек дар китоби худ "Нишонҳои амалисозӣ" мегӯяд, "... ба бинои хеле нозук асос ёфтааст, ки кодекси хуб муҳим аст ...". Аммо ҳамаи мо медонем, ки кодекси тоза муҳим аст, зеро мо тӯли солҳои зиёд бо нарасидани он сару кор доштем. Кент низ ҳамин тавр мекунад.

Кент Бек

Арзиши умумии соҳиб шудан ба як паём

Чанд сол пеш, ба монанди ҳар як таҳиягари соддакардаи Android, ки дар оғози марҳилаи ибтидоӣ дар Ҳиндустон кор мекунанд, ман кӯшиш мекардам, ки мушкилоти ҷаҳони воқеиро “фиреб” диҳанд, “саноатро халалдор кунанд” ва “нуқсонро дар олам” гузоранд. Бе ғамхорӣ дар бораи тарҳи хуби барномавӣ ё меъморӣ дар ҷаҳон, ман ба навиштани рамз барои сохтани як барномаи Android шурӯъ кардам, ки рӯзе яке аз бузургтарин барномаҳои табобатии истеъмолкунандагон дар Ҳиндустон мегардад.

Спринт пас аз спринт, хак пас аз хак, хусусиятҳо бо як шӯриши девона сохта шуданд. Сохтан. Андозагирӣ. Омӯзед. Вақт-бозор муҳим буд ва ҳар рӯз муҳим буд. Вақт гузашт, мо дар ҳар 6 моҳ суръати 1 узви гурӯҳ меафзудем ва барнома ба миллионҳо зеркашӣ ишора карда буд.

Боргирӣ ва рейтинги мағозаи Google Play -и мо.

То ин вақт, барнома ночиз буданро қатъ кард ва он ба як муштарии мултимедиявӣ табдил ёфт, агар ин ҳатто чизе бошад. Хусусиятҳое, ки ҳангоми оғозёбӣ соатҳо тӯл кашиданд, баъзан ҳафтаҳо тӯл кашиданд. Ҳар як амал 1000+ хатҳои спагетти буд, зеро Android табиатан дар бораи ҷудошавии ташвишоварон ташвиш намедиҳад. Арзиши умумии доштани бесарусомонӣ ба таври назаррас моро суст кард.

Андроид Конундрум

Рамз ба назар зишт буд, фаъолиятҳо ҳама чизро идора мекарданд:

  • Тарбияи
  • I / O
  • Ҳисоб
  • Тарҳҳо
  • Тағиротҳоро танзим кунед
  • Чӣ не

Дар ниҳоят, фаъолиятҳо нозир ҳастанд, дуруст? Ё онҳо назари? Ман дигар намедонистам

MVC

Бозсозии Гранд дар осмон

Мо бояд барномаро тавре тарҳрезӣ мекардем, ки иваз кардани хати рамз дар ягон ҷои дигаре ҳеҷ чизро вайрон накунад. Ин барнома бояд тавре буд, ки амакам Боб гуфт: "боэътимод, аммо сахтгир, фасеҳ, вале нозук нест".

Роберт

Ин ҳамон вақт буд, ки мураббӣ ва дӯсти ман Кашиф Раззақуи ба даста ҳамроҳ шуда, барои рафъи бесарусомонӣ кӯмак мекунад. Тарроҳии боҳашамат ҳеҷ гоҳ рух надодааст, аммо мо ҷаҳаннамро аз коди худ ислоҳ кардем:

  • Мо як қабати “service” илова кардем ва ҳамаи рамзҳои UI-ро ба онҳо ҳаракат кардем, як хидмат дар як вақт.
  • Мо AsyncTasksро шикастем ва бо истифода аз Гуава ба ListenableFutures гузаштем.
  • Мо AsyncHttpClient-ро барои OkHttp партофтем.
  • Аммо муҳимтар аз ҳама, мо ба хондани бисёр шурӯъ кардем: Рамзи тоза, Меъмории тоза, SOLID, DRY, Программисти прагматикӣ, Java мувофиқат дар амалия, Тарҳи Domain Driven ва ғайра.

Дере нагузашта мо самараи кӯшишҳоямонро дида истодаем. Ҳосилнокӣ баланд шуд, мо тезтар чиз навиштем, ҳама хурсанд буданд.

Ин то он даме буд, ки мо барномаҳоятонро муттаҳид кардем ва ҳама дӯзах шикаст хӯрд. Танҳо доштани як қабати хидматрасонии иловагӣ онро пора накард.

Санъати Кодекси тоза

Пас аз чандин маротиба тамошо кардани видеоҳои амакам Боб оид ба меъмории тоза ва хондани бисёр чизҳо дар бораи меъмории Android, ман қарор додам, ки бо тарҳи MVP ва RxJava озмоиш кунам.

Чанд рӯз пас аз таҷриба, мо тасмим гирифтем ба RxJava гузарем ва MVP-ро бо истифода аз меъмории тоза иҷро кунем. Мо боварӣ ҳосил кардем, ки ҳамаи қабатҳои паси интерфейсро басташуда ва нигарониҳоро хуб ҷудо кардем.

  • Намоиш, ки одатан аз ҷониби фрагмент амалӣ карда мешавад, истинодкунандаро дар бар мегирад. Ягона чизе, ки ба назар мерасид, ҳар дафъа амали интерфейс ба усули аз Гузоришдиҳанда занг задан аст.
  • Presenter масъул аст, ки ҳамчун марди миёнаро байни View ва Model иҷро кунад. Он маълумотро аз Модел мегирад ва форматкуниро ба Намуд бармегардонад. Аммо баръакси MVC маъмулӣ, он инчунин қарор медиҳад, ки ҳангоми муоина бо View чӣ мешавад.
  • Модел танҳо дарвоза барои қабати домен ё мантиқи тиҷорӣ мебошад.
  • Интерактив бо I / O кор мекунад ва таъминкунандаи маълумотест, ки дар Намоиш бояд намоиш дода шавад.

Акнун гузарондани як қабатро бо иҷрои комилан нав осонтар аст. Тарҳрезии UI, як қисм ва як қисми таҳияи барномаҳои Android, хеле осон шудааст. Чизҳо дар ниҳоят метавонанд бе шикастан зуд ҳаракат кунанд.

Қоидаи скаут писар

Навиштани код кофӣ нест, рамз бояд бо мурури замон тоза нигоҳ дошта шавад. Далели ҳаёт ин аст, ки нармафзор тамоюлро барои энтропия дорад. Бо гузашти вақт мо ҳама пӯсида шудани кодро дида будем ва бинобар ин қоидаи скаути бачаҳоро ба даст овардем: "Баҳорро аз оне, ки шумо ёфтед, тоза кунед."

Агар ҳамаи мо коди худро каме санҷида бошем, нисбат ба он вақте ки онро тафтиш кардем, он гоҳ пӯсида наметавонад. Поксозӣ набояд чизи калон бошад. Як номи тағирёбандаро барои беҳтар иваз кунед, як функсияеро, ки хеле калон аст, тақсим кунед, як нусхаи такрории хурдро бартараф кунед ва агар таркиб як таркибро тоза кунед.

Хулоса

Тарзи мо барои сохтани як миқёси густурда шояд "дуруст" набошад ва шумо бо ин мансубият розӣ набошед. Дар ниҳоят, на ҳама рассомони ҳарбӣ дар бораи беҳтарин санъати ҳарбӣ ё техникаи беҳтарин дар дохили яке аз онҳо розӣ ҳастанд;)

Равишҳои мухталиф нисбат ба MVP ва ҳалли зиёди ҷолиб барои мувофиқ кардани он ба Android мавҷуданд. Як далели он, ки мо наметавонем инкор кунем, ин дар он аст, ки Кодекси тоза муҳим аст ва шумо онро зери рама тоза карда наметавонед.

Ин мактуб аз Кодекси Тоза Бобои амрикоӣ сахт қарз мегирад ва унвонро аз гуфтугӯи Droidcon аз соли 2011 дуздидааст.

Агар Кодекси Тоза барои шумо аҳамият дошта бошад, биёед сӯҳбат кунем :) Twitter: @_arunsasi LinkedIn: https://www.linkedin.com/in/arunsasidharan

Агар ба шумо ин паём писанд омада бошад, лутфан ба дили кӯчаке задед! ❤