Android Team Lead at blu Bank
تجربه کار با فلاتر : مناسب برای پروژه های متوسط
اول از هرچی بگم که حدود پنج سالی میشه که در حوزه برنامه نویسی اندروید مشغول به فعالیت ام و وقتی شروع به کار با فلاتر کردم و اون رو با مباحث مختلف در کاتلین و جاوا مثل چند زبانه ، رنگ بندی (تم) و همینطور رندر کردن و سرعت و.. مقایسه کردم که به نتایج زیر رسیدم .
بنظر من تا این لحظه یعنی ۱۵ فروردین ۱۳۹۹ فلاتر برای پروژه های متوسط بسیار مناسب و حتی شاید بهترین گزینه باشه و مزیت هایی داره که باعث بهتر بودن پروژه میشه .
اولین چیزی که تو فلاتر منو جذب کرد و عاشقش شدم رندر یوآی و صفحات بود که با استفاده از Core های زبان C++ و Skia ویجت هارو ترسیم میکنه و اگر شما هم مثل من هی تو تنظیمات و Developer Options گزینه Show Layout Bounds رو فعال میکنید متوجه میشید که در فلاتر تمام صفحه یکبار ترسیم میشه و هیچ Bound ی بین ویجت ها نیست و سرعت خیلی خوبی داره .
اما این نوع رندر صفحات هم یسری مشکلاتی داره و برای تغییر در ایتم ها و حتی یک تکست ساده باید باید کل صفحه رو دوباره ساخت و تمام ایتم ها بخاطر یک تکست ساده دوباره ترسیم میشن و setState کردن زیاد خوشم نیومد در حالی که شما در جاوا و xml یک ویو رو آپدیت میکنید و هزینه زیادی نداره .این موضوع زمانی دیده میشه که شما یک برنامه تایمر در هردو پلت فرم بسازید و با آپدیت کردن تایمر متوجه این موضوع و فرقشون خواهید شد.
همینطور در فلاتر دیباگ کردن یکمی سخت تر شده و امکاناتی که اندروید استدیو و جاوا ، کاتلین برای کرش ها میداد که با کپی پیس کردن به باگ میرسیدیم سخت تر شده و انتظار میرفت قوی تر نسبت به قبل پیش میرفت که اینطور نشد و همینطور Log گرفتن که print ساده جایگزینش شده .
قبل از این که فلاتر رو شروع کنم به یادگیری ، این عقیده رو داشتم و دارم که پروژه ای که میخواد اصولی نوشته شه و قابل توسعه و بهترین باشه باید با زبان نیتیو و یا همون زبانی که سازندگان اون پلت فرم پیشنهاد میدن نوشته بشه و فکر میکردم فلاتر نظرم رو تغییر بده که اینطور نشد.
اما فلاتر و دارت واقعا ویژگی های زیاد و خوبی داره که برای ما برنامه نویس های موبایل مخصوصا اندروید آرزو محسوب میشد ، ویژگی هایی مثل :
اجرای سریع تغییرات Hot Reload
این ویژگی واقعا دلنشینه و بعضی از ما برای اجرای پروژه ها از کمتر از یک دقیقه تا شاید پنج شش دقیقه (من تا ده دقیقه هم فکر کنم رفتم) برای اجرای برنامه زمان هدر دادیم و وقتی مدیر میاد بالا سرمون میگیم داره بیلد میشه :) ، این ویژگی عالیه و با یه ذخیره کردن کد ها ، ویو و تغییرات اعمال میشن و با Cmd + \ ریلود میکنیم که الحق لذت بخشه .
اضافه کردن لایبرری
اضافه کردن لایبرری و Dependency در اندروید مخصوصا برای ما ایرانی ها مشکلات و اعصاب خرد کنی های زیادی داره و همینطور مثل مورد بالا تایم زیادی رو شاید صرفش کرده باشیم . اما در فلاتر این مشکلات وجود نداره و کتابخانه ها رو به راحتی میتونید تو بخش PubSpec اضافه کنید و سایت pub.dev میتونید کلی لایبرری برای کارهای مختلف پیدا کنید و مثل آب خوردن به پروژه تون اضافه کنید.
دارت (Dart) دوست داشتنی
زبان دارت از جاوااسکریپت ارث بری کرده و واقعا کدنویسی باهاش لذت بخشه . تمام مشکلاتی که ما با جاوا داشتیم و با اومدن کاتلین بهبود داده شد در دارت هم حل شده و اون ویژگی های بعلاوه یسری مباحث دیگ مثل Stream , Future بهترش کرده . کد نویسی Async و High order function و dynamic variable و.. همه و همه در دارت وجود دارند .
طراحی UI
طراحی یوای و ویجت ها در فلاتر بسیار راحت و قدرتمندتر نسبت به جاوا و همینطور مباحث مثل تم براحتی قابل پیاده سازیه ، به سادگی میشه کلاس هایی رو از ویجت ها ارث بری کرد و نوشت و بعنوان ویجت در هر جای برنامه استفاده کرد . همینطور برای طراحی یوای های پیچیده و انیمیشن ها هم فلاتر انتخاب خوبی میتونه باشه .
طراحی همزمان برای ios , Android و Cross Platform بودن
با فلاتر شما بیش از ۹۰ درصد کدهاتون ثابت اند و میتونید هم برای ios هم برای Android (و وب ) یک کد ثابت و چند خروجی بگیرید (که البته برای ios همچنان نیاز به سیستم مک برای خروجی گرفتن هستش) که باز هم این موضوع برای پروژه های متوسط انتخاب خوبی میتونه داشته باشه که در هر دو پلت فرم موبایل کاربر های خودشون رو داشته باشن و همینطور آپدیت همزمان بدن .
تست نویسی
تست نویسی در فلاتر برای Widget , Logic وجود داره و حتی راحت تر هم شده برای مثال در ویجت ها اسکرول کنید ، یک متن پیدا کنید یا یک ویجت خاص رو پیدا کنید و همینطور صحیح بودن Property و مقدار ویجت هارو تست کنید .
محیط IDE
کد های فلاتر در چند ادیتور مختلف قابل نوشتن هست و همینطور امکانات مثل auto complete و.. در اون وجود داره که اضافه کردن پلاگین فلاتر در اندروید استدیو ، intelige ، vs code و Xcode قابل استفاده است که ترجیح و انتخاب من باز هم اندروید استدیو هست .
نتیجه
در کل فلاتر پر از ویژگی های مثبت هستش و کدنویسی باهاش مخصوصا برای برنامه نویس های اندروید لذت بخشه ، خیلی از مشکلات رفع و بهبود داده شده و همینطور بروز و مدرن هست . طبیعتا بین فلاتر و React Native فلاتر باید انتخاب شه و از لحاظ سرعت و استفاده از منابع خیلی خیلی سرتره و بنظرم طراحی بعضی نرم افزار های متوسط با فلاتر هم انتخاب خوبی میتونه باشه . اما اگر این مشکل رندر و setState نبود یا در اینده حل بشه واقعا خرده ای نمیشه به فلاتر گرفت .
این مطلب نظر من درباره فلاتر و تجربه کار با اون بود و احتمال اشتباه هم درش هست اما خوشحال میشم نظرتون رو بدونم و بیشتر باهم در موردش صحبت کنیم .
وب سایت من
مطلبی دیگر از این انتشارات
زبانهای برنامهنویسی که هر تازهکاری باید یاد بگیرد
مطلبی دیگر از این انتشارات
۵ راهکار برای زمانبندی مناسب
مطلبی دیگر از این انتشارات
ریپازیتوری های جالب گیتهاب . با توضیح یک خطی