آنچه یک برنامه‌نویس اندروید باید بداند

سید ایوب کوکبی چهارشنبه ۱ خرداد ۱۳۹۸
آنچه یک برنامه‌نویس اندروید باید بداند

سال ۲۰۱۸ برای توسعه‌دهندگان اندروید سال مهمی بود. تغییرات زیادی در Android SDK شاهد بودیم. تمرکز خاصی روی زبان کاتلین شده بود و ابزارهای جدیدی برای تولید سریع‌تر برنامه‌های اندرویدی در اختیارشان قرار گرفت. در این مطلب قصد داریم شما را با چیزهایی آشنا کنیم که برای سال پیش‌رو حتماً باید در دستور کار خود قرار دهید. تکنولوژی‌ها، کتابخانه‌ها و روش‌های معرفی شده در این پست از حالت اختیاری خارج شده و کم کم به یک باید در کدنویسی اندروید تبدیل شده‌اند. بسیاری از پروژه‌های متن‌باز از این‌ها استفاده می‌کنند و برای فهم کدشان حتماً باید مفاهیم بیان شده را درک کنید.

ویومدل (ViewModel)

شاید اولین موضوع مهمی که همه توسعه‌دهندگان اندروید باید با آن آشنا باشند، درک مفهوم ویومدل و چگونگی پیاده‌سازی آن باشد. ,ویومدل بخشی از معماری اندروید است که برای بهبود چرخۀ حیات اپلیکیشن‌ها ساخته شده است. ویومدل کلاسی کمکی است که از چرخۀ حیات برنامه آگاه بوده و داده‌ها را برای واسط گرافیکی برنامه (UI) آماده می‌کند. وقتی لیست طویلی از اطلاعات به کاربران خود نشان می‌دهید، ویومدل اطلاعات مورد نیاز برای قرار گرفتن در این لیست را فراهم می‌کند.

چیزی که این کامپوننت را مفید و کاربردی کرده ارتباط خوبش با فرگمنت و اکتیویتی است. این یعنی برای ذخیرۀ متغیرها دیگر نیازی به استفاده از onSavedInstanceState نیست. یا وقتی کاربر صفحه را می‌چرخاند همه چیز به حالت اول برنمی‌گردد. ویومدل همواره در حافظه هست و فقط زمانی وارد عمل می‌شود که اکتیویتی یا فرگمنت کاملاً از بین رفته باشد. با کمک ویومدل می‌توانید اطلاعات را بین فرگمنت‌ها به اشتراک بگذارید. بدین ترتیب نیازی به استفاده از Listener داخل هر فرگمنت نیست.

لایودیتا (LiveData)

بخش دیگری از معماری اندروید بوده که اجازه می‌دهد اشیاء Observable داشته باشیم ولی دیگر نگران این موضوع نخواهیم بود که در صورت فعال نبودن UI روند تأمین داده‌ها متوقف شود. لایودیتا کمک می‌کند تا دچار نشت حافظه و خطاهای بروزرسانی صفحه نشویم و همواره داده‌ها را در رابطه‌ای محکم با واسط گرافیکی برنامه داشته باشند. لایودیدتا داده‌ها را به بهترین نحو به یوزر اینترفیس برنامه متصل می‌کند.

بخوانید  ترفندهای مفید اندروید استودیو

MVVM

این الگو ترکیب دو کامپوننت بالاست. اندروید سال‌ها بود که با مشکل طراحی نامناسب دست‌پنجه می‌کرد. با پیشرفت‌هایی که گوگل داشته اکنون می‌توانیم از بهینه بودن برنامه و تست‌پذیری‌اش اطمینان کافی داشته باشیم چرا که کدهای برنامه در لایه‌های مجزایی قرار می‌گیرد.

MVVM که سرنام Model-View-ViewModel است از طرفی با داده‌های ما ارتباط برقرار می‌کند (Model)، از سویی با واسط کاربری برنامه (View) و از طرفی ارتباط این دو لایه که توسط ViewModel انجام می‌شود. در واقع کاری که ویومدل انجام می‌دهد رساندن داده‌ها از دیتابیس به واسط کاربری است. جداسازی لایه‌ها همانطور که قبلاً گفته‌ایم به توسعۀ راحت‌تر و اشکالی‌زدایی سریع‌تر برنامه کمک می‌کند ضمن اینکه در پروژه‌های تیمی استاندارد بسیار قابل قبولی است.

WorkManager

سال‌ها پیش برنامه‌نویسان برای اجرای سرویس در پس زمینه نیازمند استفاده از چندین کتابخانه بودند. آن‌ها باید از Alarm Managers، JobDispatcher, IntentService و … استفاده می‌کردند. ولی اکنون می‌توانید همۀ این کارها را فقط با کتابخانۀ WorkManager انجام دهید. این کتابخانه خودش می‌داند چه زمانی چه کاری باید انجام دهد. استفاده از آن میزان کدنویسی را کاهش داده و بنابراین سرعت توسعۀ برنامه افزایش پیدا می‌کند.

Fastlane

Fastlane ابزار بسیاری مناسبی جهت تسریع چرخۀ انتشار برنامه است. این ابزار کمک می‌کند تا توسعه‌دهندگان بتوانند برنامه‌ها خود را بعد از تست به صورت خودکار در گوگل پلی منتشر کنند. شما می‌توانید مسیرهای مختلفی برای انتشار برنامه (آلفا، بتا و …) در نظر بگیرید. امکان اجرای یونیت تست و حتی آپلود apk برای تست در سرویس‌هایی مثل مزرعۀ Amazon Device Farm وجود دارد. این افزونه واقعاً تمام چیزی که برای انتشار حرفه‌ای برنامه در گوگل پلی نیاز دارید را در خود جای داده است و قابلیت‌هایش بیشتر از انتظارات شماست.

بخوانید  آموزش زبان کاتلین – درس 10 (حلقۀ while و do...while)

Tablet Layout

Tablet Layout لی.اوت جدیدی است که در صورت استفاده از آن برنامۀ شما در دسته‌بندی Designed for tablets (طراحی شده برای تبلت) در گوگل پلی قرار می‌گیرد. این قابلیت میزان دیده شدن برنامه را افزایش می‌دهد.

ConstraintLayout

ConstraintLayout در واقع نسخۀ دوپینگ شدۀ RelativeLayout است. با استفاده از لی.اوت برنامه‌نویسان می‌توانند پیچیده‌ترین چینشها را برای واسط گرافیکی برنامه طراحی کنند. ویژگی جالب این لی.اوت ساخت چینش‌های پیچیده بدون تودرتو شدن آن‌هاست و با کم شدن عناصر تودرتو سرعت برنامه بیشتر می‌شود. این یعنی برنامۀ شما کارایی بهتری از خود به نمایش خواهد گذاشت. از آنجایی که کاربران تحمل برنامه‌های کند را ندارند، استفاده از این ویژگی ضروری است.

واسط گرافیکی بدون توقف

در هنگام ساخت برنامه بسیار رایج است که توسعه‌دهندگان با استفاده از ProgressDialog و سایر انواع المان‌ها تعامل کاربر با برنامه را در حین عملیاتی مثل دانلود فایل و اتصال به شبکه قطع می‌کنند. ولی این کار تجربۀ کاربری خوبی به همراه ندارد. بهتر است به جای این کار دکمه‌ها به حالت غیرفعال درآیند. در این حالت کاربر همچنان می‌تواند با سایر قسمت‌های برنامه تعامل داشته باشد تا زمانی که تصویر یا فایل دانلود شود.

طراحی متریال و تم مشکی

طراحی اپلیکیشن‌های اندرویدی از همان اول به شکلی امروز نبود. بخش زیادی از بهبودهای حاصل شده به خاطر متریال دیزاین گوگل بودن که وقت زیادی صرف آن شده است. با استفاده از کامپوننت‌های متریال، ساخت برنامه‌هایی با ظاهر متریال بسیار آسان شده است. این کامپوننت همچنین از حالت شب برخوردار است که با توجه به موقعیت زمانی می‌توان تم‌های روشن و تیره به کاربران نشان داد. حالت شب باعث می‌شود تا هنگام شب کاربران چشمشان آسیب نبیند و مصرف باتری کاهش یابد.

آزمون واحد (Unit Test)

قبلاً در مورد آزمون واحد و چگونگی استفاده از آن در روش TDD سخن گفته‌ایم. با یونیت تست خیالمان از بابت اعمال تغییرات به برنامه راحت است. وقتی قرار است تغییرات جدیدی در برنامۀ اعمال کنید مطمئن نیستید که آیا آپدیت جدید، عملکرد قبلی برنامه را تحت تاثیر قرار می‌دهد یا نه. یونیت تست برای رفع این مشکل به وجود آمده است.

بخوانید  آموزشِ زبانِ کاتلین (درس 2: مبانی)

در واقع شما برای کدهای قبلی خود تست‌هایی می‌نویسید و بعد از اعمال هر تغییر جدید، آن تست‌ها را اعمال می‌کنید. حال اگر تست‌ها همگی درست اجرا شده و سبز شوند مطمئن هستید که آپدیت جدید مشکلی ایجاد نکرده است. در اغلب پروژه‌های بزرگ بخصوص پروژه‌های متن‌باز یونیت تست بخش جدایی‌ناپذیر کدهاست. سعی کنید خود را به استفاده از آن عادت دهید. برای نوشتن این تست‌ها کتابخانه‌های زیادی معرف شده که Robolectric یکی از آن‌هاست.

کاتلین

کاتلین قبلاً خیلی بحث جدی‌ای نبود ولی با حمایت رسیم گوگل از این زبان، آیندۀ جدیدی برای آن رقم خورد. اکنون در محیط اندروید استودیو می‌توانید به زبان کاتلین کدنویسی کنید. مزایای آن افزایش سرعت کدنویسی، کاهش کدهای تکراری و خوانایی بیشتر کدهاست. ضمن اینکه امنیت نوع دارد و خیالتان از بابت باگ‌های متعددی که زیر سر null بوده راحت می‌شود. بیشمار دلیل برای مهاجرت از جاوا به کاتلین وجود دارد که ذکر همۀ آن‌ها در این مقاله مقدور نیست. برای شروع کار با این زبان دورۀ آموزشی کاتلین در اسکارپ را حتماً دنبال کنید.

نتیجه

با پیاده‌سازی موارد بالا می‌توانید سال جدید را پربارتر آغاز کنید. پیروی از ترند‌های برنامه‌نویسی باعث بهبود کدنویسی و مهارت‌های برنامه‌نویسی شما می‌شود. پیشنهاد می‌کنیم با جستجو در اینترنت راجع مطالبی که گفتیم اطلاعات بیشتری کسب کنید و یادگیری آن‌ها را به تعویق نیندازید. هرچقدر دیرتر سراغ‌شان بروید پیچیده‌تر و بزرگ‌تر می‌شوند و درکشان دشوارتر. توصیه می‌کنیم هر روز در کنار روال کاری معمول، کمی کتاب بخوانید و زمانی هم برای یادگیری تکنولوژی‌ها و روش‌های جدید برنامه‌نویسی بگذارید.

دیدگاه شما :

1 دیدگاه

  • سرگرمی ۸ خرداد ۱۳۹۸

    خوب بود

عضویت در خبرنامه

عضویت در خبرنامه برای عضویت در خبرنامه پیامکی، عدد 1 را به شماره 30005563 پیامک کنید.