Async Digital / Iris
Astudiaeth achos

Pan fydd llywio yn golygu mwy na gwthio

Cyfansoddiad

Chwilio, hidlwyr, sgrolio sy’n aros, troshaenau ehangu. Nid sgrin i’w gwthio yw’r un ohonynt, ac mae pob un yn lle y dylai URL allu mynd â chi iddo. Ateb y pecyn yw set sefydlog o newidiadau cyflwr wedi’u henwi ac un cam a rennir sy’n eu cymhwyso, pwy bynnag sy’n gofyn.

Crynodeb

Yn aml, nid sgriniau yw cyrchfannau mwyaf defnyddiol ap. Ymholiad chwilio, hidlydd rhestr, sgrôl sy’n aros, avatar wedi’i ehangu: cyflwr y mae golwg yn ei ddarllen yw pob un, nid sgrin i’w gwthio. Mae Iris yn trin y rheini fel set sefydlog ac wedi’i henwi o newidiadau cyflwr y mae’r ap yn eu datgan, ac yn eu rhedeg mewn trefn trwy un cam a rennir o’r enw apply, rhwng y symudiadau strwythurol fel gwthio a chyflwyno. Y wobr yw un wyneb rhaglenadwy: mae tap, URL, prawf, a chipio sgrin sgriptiedig i gyd yn gyrru’r ap ar hyd yr un llwybr, ac mae pob newid yn cael ei gofnodi gyda’r cyflwr a gynhyrchodd. Mae’r erthygl hon yn cerdded trwy set lawn yr ap demo o newidiadau, yn dilyn y pedwar pwynt mynediad at yr un cam y maent yn ei rannu, ac yn onest am yr hyn y mae’n ei gostio.


Patrwm

Y cyflwr na all llwybrydd sgriniau ei gyrraedd

Mae dwy erthygl gynharach yn gosod y sylfaen i hon. Fe wnaeth un gyfrif y darlleniadau: golygon yn ymgynghori â chyflwr cydlynydd a rennir, ddegau o weithiau, gan drin hynny fel cost onest cyflwr dros dro y mae sawl sgrin yn poeni amdano. Dangosodd y llall sut mae URLau yn cyrraedd y cyflwr hwnnw heb ollwng cyd-destun i ramadeg yr URL. Mae’r darn hwn yn enwi beth yw’r cyflwr mewn gwirionedd, o ochr yr ap: set sefydlog o newidiadau cyflwr wedi’u henwi.

Y cwestiwn sy’n ei ysgogi: pan fydd “llywio” yn golygu mwy na gwthio a chyflwyno, lle mae’r gweddill yn byw? Chwiliad sgyrsiau. Hidlydd rhestr. Sgrôl sy’n gorfod aros i’w rhestr fodoli. Troshaen ehangu avatar. Atodiad wedi’i agor yn llawn sgrin. Nid sgrin i’w gwthio yw’r un ohonynt. Cyflwr y mae golwg yn ei ddarllen yw pob un.

Mae’r rhan fwyaf o haenau llywio yn stopio wrth ffin y sgrin ac yn gadael y cyflwr hwnnw i osodwyr ad-hoc ar wasgar trwy’r ap. Mae Iris yn cymryd y safbwynt arall. Dilyniant o gamau yw cynllun llywio, ac mae cam naill ai’n strwythurol (gwthio, popio, cyflwyno, cau) neu’n effaith: un newid cyflwr wedi’i enwi y mae’r ap yn ei ddatgan, wedi’i gymhwyso trwy un dull y mae’r ap yn ei ddarparu. Nid yw’r pecyn yn gwybod beth mae effaith yn ei olygu. Mae’n gwarantu pryd mae effeithiau’n rhedeg, ym mha drefn, a beth sy’n digwydd pan fydd URL mwy newydd yn torri ar eu traws.


Geirfa

Set gaeedig o newidiadau wedi’u henwi

Hanner yr ap o’r cytundeb yw’r set honno o newidiadau. Mae pob un yn enwi un darn o gyflwr dros dro, a gall cynllun gydblethu camau strwythurol a’r camau effaith hyn mewn un rhestr drefnedig. Yr un lle y gwneir y newidiadau hynny mewn gwirionedd yw’r cam cymhwyso. Yn yr ap negeseuon demo y mae’r gyfres hon yn mesur ei honiadau yn ei erbyn, y set lawn yw deg newid yn ysgrifennu saith priodwedd arsylladwy.

Cyflwr ap cyffredin yw’r deg, wedi’i enwi unwaith yr un: gosod neu glirio chwiliad o fewn edefyn; clirio hidlydd y rhestr; ciwio sgrôl i res avatar neu i res sgwrs; ehangu neu gywasgu avatar; ehangu neu gau atodiad delwedd; ac un cyfansawdd sy’n dewis tab bot a’i hidlydd gyda’i gilydd.

Mae siâp y set mor ddadlennol â’i maint. Daw’r newidiadau mewn parau cymesur sy’n rhannu priodwedd: gosod-a-chlirio ar gyfer chwilio, ehangu-a-chywasgu ar gyfer yr avatar, ehangu-a-diystyru ar gyfer yr atodiad. Mae’r un newid cyfansawdd yn ysgrifennu dwy briodwedd mewn un pas, fel nad yw’r rhyngwyneb byth yn dangos y cyflwr hanner ffordd. Mae golygon yn darllen y priodweddau hyn yn uniongyrchol. Mae profion ac awtomeiddio yn eu darllen trwy giplun, sef copi wedi’i becynnu o gyflwr arsylladwy’r ap sy’n cael ei stampio ar bob newid y mae’r trywydd yn ei recordio.

Yn fwriadol, nid yw’r pecyn yn berchen ar yr un o’r enwau hyn. Gadewais y newidiadau i’r ap, oherwydd mai dim ond yr ap sy’n gwybod beth yw ei gyflwr dros dro; yr hyn y mae’r pecyn yn berchen arno yw’r gwarant bod y set yn aros yn gaeedig. Os yw darn o gyflwr yn werth ei yrru o URL, mae’n ennill un newid wedi’i enwi, un cofnod yn y cam cymhwyso, a dim byd arall.


Cydgyfeiriant

Pedwar pwynt mynediad, un gweithrediad

Yr hyn sy’n gwneud y set yn wyneb rheoli yn hytrach na thabl llwybro yw pwy sy’n cael ei defnyddio. Mae pedwar galwr yn cydgyfeirio ar yr un cam cymhwyso.

  1. Tapiau. Nid yw trinydd tap yr eicon chwilio yn ysgrifennu’r ymholiad chwilio ei hun. Mae’n adeiladu URL ac yn ei agor, fel bod yr un penderfyniad ymwybodol o gyflwr yn berthnasol ag ar gyfer dolen yn cyrraedd o’r tu allan. Paredd trwy adeiladwaith, nid trwy adolygu cod.
  2. URLau. Mae’r llwybr agor yn dosrannu URL sy’n cyrraedd yn erbyn ciplun wedi’i rewi o’r cyflwr presennol, yn adeiladu cynllun, ac yn ei redeg. Dyma’r llwybr y mae popeth arall yn ei fenthyg.
  3. Profion. Mae gyrrwr y profion yn tanio URLau at y llwybr agor ac yn gwirio yn erbyn y trywydd a recordiwyd. Mae’n darllen yr un priodweddau arsylladwy â’r golygon, trwy’r un ciplun.
  4. Cipio sgriptiedig. Mae simctl openurl yn gyrru’r llwybr agor o gragen. Felly y llwyfannwyd y recordiadau yn y gyfres hon: sgript yn tanio URLau at yr ap sy’n rhedeg nes bod y sgrin yn dangos y cyflwr sy’n werth ei gipio.

Nid gweithrediadau cyfochrog o’r un ysgrifeniad yw’r pedwar pwynt mynediad; un gweithrediad ydynt, wedi’i gyrraedd mewn pedair ffordd.

URL na welodd y defnyddiwr mohono yw tap. URL gyda gwiriadau yw prawf. URL gyda chamera’n rhedeg yw sesiwn gipio. Tynnwch unrhyw un ohonynt ac nid yw’r cam cymhwyso yn gwybod nac yn poeni.

Ffig 1 Mae pedwar pwynt mynediad yn cydgyfeirio ar un cam cymhwyso; mae’r cam hwnnw yn ysgrifennu’r priodweddau y mae pob golwg yn eu darllen.

Dilyniant

Un bwriad, un rhestr drefnedig

Mae effeithiau’n ennill eu lle pan fyddant yn cyfansoddi gyda llywio strwythurol. Pan fydd URL fel botmessages://avatar/aria-7/expanded yn gofyn am avatar wedi’i ehangu, mae’r llif yn dychwelyd un rhestr drefnedig:

case .avatarExpanded(let id):
    return [
        // clirio beth bynnag sy'n gorchuddio'r sgrin
        .effect(.dismissAttachmentExpansion),
        .effect(.clearInThreadSearch),
        .effect(.clearListFilter),
        // dychwelyd y pentwr i'r gwraidd
        .nav(.popToRoot),
        .nav(.dismissSheet),
        // yna sgrolio at yr avatar a'i ehangu
        .effect(.scrollToAvatarRow(id)),
        .effect(.expandAvatar(id))
    ]

Pum cam effaith a dau gam llywio ar gyfer un bwriad. Clirio beth bynnag allai fod yn gorchuddio’r sgrin, dychwelyd y pentwr i’r gwraidd, yna sgrolio ac ehangu. Mae’r pecyn yn rhedeg y rhestr mewn trefn ac yn gwirio am ganslo rhwng camau; dim ond un newid ar y tro y mae cam cymhwyso’r ap byth yn ei weld.

Cyn gwneud unrhyw newid, mae’r cam cymhwyso yn gwneud tri pheth:

  1. Gwirio a yw URL mwy newydd eisoes wedi goddiweddyd y rhediad hwn, ac os felly recordio’r newid yn y trywydd gyda’r ôl-ddodiad [cancelled] yn lle ei gymhwyso.
  2. Gofyn a fyddai’r newid yn gwneud dim yn erbyn y cyflwr presennol. Mae’r cliriadau (cau’r avatar, clirio’r chwilio, clirio’r hidlydd, cau’r atodiad) yn hepgor yr ysgrifeniad ac yn recordio digwyddiad [skipped].
  3. Gohirio’r cofnod trywydd ei hun, fel bod hyd yn oed y newidiadau a warchodir wrth redeg yn glanio yn y trywydd gyda’r ôl-ddodiad cywir.

Y tu mewn i’r cam cymhwyso, un ysgrifeniad i un briodwedd arsylladwy yw pob newid. Mae’r haen olygon yn ymateb, mae’r trywydd yn stampio ciplun ôl-gyflwr, ac mae’r cam nesaf yn rhedeg. Y trywydd yw’r rhan y mae profion ac asiantau yn pwyso arni: nid “cafodd yr URL ei drin”, ond “digwyddodd yr ysgrifeniadau hyn, yn y drefn hon, a dyma’r cyflwr a adawodd pob un ar ei ôl”.

Ffig 2 Un bwriad, un rhestr drefnedig. Mae’r cynllun ar gyfer botmessages://avatar/aria-7/expanded yn saith cam a redir mewn trefn, pum cam effaith a dau gam llywio wedi’u cydblethu, gyda chanslo wedi’i wirio rhwng camau. Mae pob cam yn mynd trwy un apply sy’n gwarchod cyn iddo ysgrifennu; mae pob ysgrifeniad yn stampio ciplun ôl-gyflwr i’r trywydd.

Terfynau

Yr hyn y mae’r dyluniad yn talu amdano

Nid yw dim o hyn am ddim. Mae pedair cost yn werth eu henwi, oherwydd mae pob un yn ffinio pa mor bell y gellir ymddiried yn y trywydd a sut mae’r wyneb yn ymddwyn ar ei ymylon.

Rhybudd

Mae’r newid cyfansawdd yn cuddio trefn fewnol. Mae’n ysgrifennu’r tab a’r hidlydd mewn un pas fel nad yw’r defnyddiwr byth yn gweld tab heb ei hidlo yn y canol. Y gost yw manylder: mae’r trywydd yn dangos un digwyddiad, nid dau. Mae diagnosio atchweliad lle newidiodd y tab ond na newidiodd yr hidlydd yn golygu darllen y cod, nid y trywydd.

Rhestrir beth i’w hepgor â llaw. Rhestrir y pedwar cliriad â llaw, pob un gyda gwiriad bach sy’n enwi’r briodwedd y mae’n ei brofi. Ni all y pecyn weithio allan ar ei ben ei hun a fyddai newid yn gwneud dim. Mae angen cofnod newydd ar effaith glirio newydd, neu bydd y trywydd yn recordio ysgrifeniadau na ddigwyddodd go iawn.

Mae gwarchodwyr amser rhedeg yn hepgor yn hytrach na chwalu. Mae dau newid yn chwilio yn nata enghreifftiol y demo am y ddadl a roddir iddynt, ac mae id anhysbys yn marcio’r cam fel un a hepgorwyd yn hytrach na stopio’r rhediad. Mae’r wyneb yn aros ar agor i fewnbwn annilys; mae’r ap yn amsugno’r methiant wrth gymhwyso. Mae dosrannu’n aros yn bur; cymhwyso sy’n cario’r gwarchodwyr.

Mae recordio’r trywydd yn ddiamod. Mae pob cymhwysiad yn recordio digwyddiad gyda chiplun ffres, ac mae’r rhestr ddigwyddiadau yn tyfu nes i’r defnyddiwr ei hailosod. Mewn cynhyrchu mae hynny wedi’i ffinio gan gylch bywyd y trywydd; mewn sesiynau hir, gwaith y defnyddiwr yw’r ailosod.


Darlleniad

Paredd fel ffaith strwythurol

Pan fydd mynediad tap a mynediad URL yn rhannu un cam cymhwyso, mae “gallwch yrru’r ap trwy URL” yn peidio â bod yn honiad ac yn dod yn briodwedd o’r bensaernïaeth. Mae prawf yn tanio URL oherwydd URLau yw’r iaith fewnbwn. Mae recordiad demo yn tanio URL am yr un rheswm. Mae asiant sy’n gosod yr ap ar gyfer sgrinlun yn tanio URL oherwydd nad oes dim byd arall i’w danio. Dim llwybr arbennig i brofion, dim bachyn ar wahân i’r recordio, dim API cyfochrog i awtomeiddio lithro’n hen.

Mae’r un wyneb yn ateb cwestiwn anoddach: faint all un URL ei roi i’r defnyddiwr, yn barod i barhau yn hytrach na dechrau eto? Achos effaith fel unrhyw un arall yw paratoi drafft, ac mae cyflwr cyfansoddi wedi’i baratoi, yng nghanol ei olygu, ddwy haen o ddalennau i lawr, yn troi allan i fod yn werth un URL o waith. Mae darn olaf y gyfres yn dangos hynny o’r dechrau i’r diwedd. Mae’r map llawn yn byw ar yr hwb dolennu dwfn.