چند وقت پیش بود که سفارش یک اپ غربالگری سلامت رو گرفتم. قرار بود در این اپ ریسک 20 30 تا بیماری مختلف رو برای کاربر محاسبه کنم. کاربر جواب تعدادی سوال رو میداد و سپس بر اساس پرسشنامه بالینی معتبر دانشگاهی، ریسک بیماری ارزیابی بشه و سپس به کاربر نشون داده بشه.

چون دستم به سی-شارپ فرز هست یه بررسی رو .NET MAUI کردم و دیدم که جواب میده، پس یه mvp باهاش بالا آوردم. از نوشتن کد تکراری (Boilerplate) در معماری MVVM در MAUI خوشم نیومد، پس دنبال معماری جایگزین گشتم.
از راه همین گشت و گذار با فریم ورک Uno آشنا شدم. یک پلفرم توسعه Cross Platform که با دات نت می تونی هم برای ویندوز و هم لینوکس و هم مک و هم وب و هم اندروید کد بنویسی. خیلی گرفتم!
پس استارت یه MVP جدید رو باهاش زدم. خییییییییییییییلی عالی بود. من کد سی-شارپ می نوشتم و اجرای اون رو توی اندروید میدیدم. مطمئن شدم که انتخاب درستی بود. کما اینکه بسیاری از کارای بیخود dot NET MAUI رو هم حذف کرده بود و سرعت توسعه رو بیشتر می کرد.
تصمیمم رو نهایی کردم و شروع به کار کردم. از Disorder Evaluator ها که ریسک بیماری ها رو ارزیابی کرد شروع کردم و بعد تست هاش رو نوشتم. حجم خوبی از کار جلو رفت و رسید به قسمتی از اون که کمتر باهاش راحت بودم و اون قسمت ظاهر برنامه بر اساس فایل های xaml بود. کم کم این ها رو هم انجام دادم.
اما یه چیزی که این روزا خیلی داره اذیتم می کنه، اینه که به هیچ عنوان خطاهایی که throw میشن، باعث کرش کردن برنامه نمیشه و این فاجعه س موقع توسعه
راه های متعددی که در وب بود رو امتحان کردم، داکیومنت خوندم ولی نتونستم برنامه رو کرش کنم. انگار در یک try/catch سراری هستی که ازش نتونی فرار کنی.
کم کم مسائل دیکه هم پیش اومد. آپدیت نبودن داکیومنت های Uno Platform، کامپتیبل نبودن nugetها با نسخه های پایین تر، بعضی از لایبراری ها اندروید وابسته به پیاده سازی لایبرای ویندوزی بودن و نداشتن کامپوننت های ساده ایی مثل Number Picker
با زحمت فراوان! (بدبختی) دارم کار رو تموم می کنم ولی مطمئن هستم دفعه بعدی قطعا از کاتلین و همون Tool Chain های اندروید برای نوشتن یک اپ استفاده خواهم کرد. مثالش اینه که بخوان با چاقوی میوه خوری، طناب ببرم. آخرش میشه ولی به ........ میریم