Negalima atributai „MVVMCross“, ypač tie, kurie buvo įvesti tokiose versijose kaip 7.1.0 ir 8.0.0, didelę įtaką derinimo procesui daro didelę įtaką, padidindamas klaidų pranešimų, susijusių su NULL nuorodomis, tvirtumą ir aiškumą. Čia nėra, kaip negaliojami atributai daro įtaką derinimui MVVMCross:
Naikinamų atributų įvedimas
„MVVMCross“ versijos 7.1.0 ir 8.0.0 pristatė API panaikinamus atributus, kurie naudojami nurodant, ar metodo parametras, ar grąžinimo tipas gali būti nulinis. Šis papildymas padeda kūrėjams nustatyti galimas nulines nuorodų problemas kompiliavimo metu, o ne vykdymo laikas, todėl kodas tampa tvirtesnis ir lengviau derinamas.
Poveikis derinimo srityje
1. Aiškūs nuliniai patikrinimai: Naudodamiesi negaliojančiais atributais, metodai, kurie nesitiki, kad NULL vertės aiškiai išmes „argumentNullexception“, jei praeis NULL. Tai leidžia lengviau nustatyti, kur perduodamos niekinės nuorodos, leidžiant kūrėjams efektyviau nustatyti ir efektyviau išspręsti problemas derinimo metu.
2. Kompiliavimo laiko įspėjimai: Naikinamų atributų naudojimas gali suaktyvinti įspėjimus kompiliavimo metu, jei metodas, kuris nepriima NULLS, yra perduodamas potencialiai nuline verte. Ši išankstinio perspėjimo sistema padeda kūrėjams sugauti ir išspręsti galimas NULL nuorodų problemas, kol jie netaps vykdymo klaidomis, sumažindama didelio derinimo poreikį.
3. Patobulinti klaidų pranešimai: Kai „argumentNullException“ išmetamas dėl nulinės vertės, perduodamos metodo, kuris nepriima nulio, klaidos pranešimas aiškiai parodys problemos šaltinį. Šis klaidų pranešimų aiškumas padeda greičiau identifikuoti ir išspręsti problemas derinimo proceso metu.
4. Kodo kokybė ir patikimumas: Vykdydami niekinamumo patikrinimus, kūrėjai raginami rašyti tvirtesnį kodą. Tai sukelia mažiau klaidų vykdymo laiko ir daro programą patikimesnę, todėl sumažina bendrą laiką, praleistą derinimui.
derinimo būdai su „MVVMCross“
Norėdami veiksmingai derinti „MVVMCross“ programas, kūrėjai gali naudoti įvairius metodus:
- Šaltinio susiejimas: „MVVMCross“ palaiko šaltinio susiejimą, kuris leidžia kūrėjams pereiti per MVVMCross šaltinio kodą derinimo metu. Ši funkcija yra ypač naudinga norint suprasti, kaip MVVMCROSS tvarko tam tikrus scenarijus ir nustato problemas pačioje sistemoje [6] [12].
- Simbolių paketai: „MVVMCross“ pateikia simbolių paketus, kurie įgalina išsamų derinimą, įskaitant lūžių taškų nustatymą ir žingsnį per sistemos kodą. Ši galimybė yra būtina diagnozuojant sudėtingas problemas, kurios gali kilti dėl programos kodo ir MVVMCross sistemos sąveikos [2] [12].
- Gyvenimo ciklo metodai: „MVVMCross“ pateiktų gyvenimo ciklo metodų supratimas, pavyzdžiui, „pasirodo“, „pasirodė“, „dingsta“ ir „dingo“, gali padėti kūrėjams efektyviau valdyti savo vaizdų modelių būklę. Tinkamas šių metodų naudojimas gali užkirsti kelią bendroms problemoms, tokioms kaip nulinės nuorodos peržiūros metu [8] [10].
Apibendrinant galima pasakyti, kad „MVVMCross“ negaliojantys atributai sustiprina derinimo procesą pateikdami aiškesnius klaidų pranešimus, skatindami tvirtesnį kodą ir sumažindami niekinės nuorodos išimtis. Kartu su pažangiais derinimo būdais, tokiais kaip šaltinių susiejimas ir gyvavimo ciklo valdymas, kūrėjai gali efektyviai nustatyti ir išspręsti problemas savo programose.
Citatos:[1] https://www.mvvmcross.com/mvvmcross-7.1.0-release/
[2] https://stackoverflow.com/questions/21029462/debugging-mvvmcross-application-in-xamarin-utudio-with-mvvmcross-sources
[3] https://github.com/mvvmcross/mvvmcrosstutorials
[4] https://stackoverflow.com/questions/36802966/show-a-value-in-case-of-null-in-mvvmcross
[5] https://stackoverflow.com/questions/24145410/mvvmcross-android-null-reference-for-viewmodel-wen-reloading-fragments
[6] https://nicksnettravels.builttoroam.com/post-2018-07-31-debugging-and-contributing-to-mvvmcross-aspx/
[7] https://leaware.com/creating-cross-platform-xamarin-application-using-the-mvvmcross-framework/
[8] https://www.mvvmcross.com/mvvmcross-5-release/
[9] https://www.mvvmcross.com/mvvmcross-8.0.0-release/
[10] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[11] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[12] https://www.mvvmcross.com/documentation/contributining/debugging-with-symbols