بیش از دو سال از شروع علاقه من به توسعه اندروید میگذرد. امروز، بعد از انجام چندین پروژه و کسب تجربه، قصد دارم 7 درسی که در این مدت کوتاه فراگرفتم را با شما درمیان بگذارم.
۱. معماری صحیح را انتخاب کنید و از ابتدا آن را بهکار ببرید
آیا این اسامی مخففشده مثل MVC،MVP ،MVVM و ... را شنیدهاید؟ اینها معماریهای مختلف نرمافزار هستند و شما باید آنها را بشناسید.
بیشتر مبتدیان، تمام کدشان را، بدون استفاده از معماری مناسب مینویسند که البته برای شروع، کار مناسبی است؛ اما برای ادامه، این کار مناسب نیست.
هرچه پروژه بزرگتر میشود، کد شما هم بهطور فزایندهای گیجکننده و وابستهتر میشود و انجام تست، پشتیبانی و توسعه ویژگیهای جدید بسیار سخت میشود.
به همین دلیل است که باید از ابتدا از یک معماری شفاف و واضح نرمافزار استفاده کنید. همانطور که قبلاً اشاره کردم، چندین معماری مختلف وجود دارد که هرکدام مزایا و معایب خود را دارند. امروزه استفاده از معماری برنامه کاربردی زیر توسط گوگل توصیه میشود:
همانطور که در شکل بالا مشاهده میکنید، هر جزئی وابسته به جزئیات سطح پایینی خود است.
چنین طراحی یک UX پایدار ایجاد میکند که مستقل بودن موضوعات را درنظر میگیرد و برای تست و مقیاسدهی مناسب است. بهطور مشخص، هیچ ساختار کاملی برای تمام موقعیتها وجود ندارد، همانطور که گوگل هم میگوید:
«تنها یک راه برای نوشتن برنامه کاربردی که مناسب تمام پروژهها باشد، وجود ندارد؛ اما این مدل معماری پیشنهادشده در بالا یک نقطه شروع خوب برای بیشتر موقعیتها و فرایندهای کاری است.»
ازآنجاییکه هدف این مقاله معرفی این معماری نیست، من جزئیات این معماری را شرح نمیدهم اما منابع مهم را طبق فهرست زیر معرفی میکنم:
۲. استفاده از کتابخانههای مناسب
زمانی که من کار روی اولین پروژه خودم را آغاز کردم، میخواستم همه کارها را در scratch انجام دهم. من تقریباً از هیچ کتابخانه جانبی استفاده نمیکردم. احتمالاً در آن زمان قصد یادگیری بیشتر داشتم.
اگرچه استفاده از این روش برای اولین پروژه مناسب است، اما بهطورکلی یک روش اشتباه است. با این روش، زمان زیادی صرف دوبارهکاری میشود؛ این کار را نکنید. (هرگز دوباره چرخ را مجدد اختراع نکنید!)
بعد از اولین تجربه، من شروع به استفاده از کتابخانههای متنباز کردم. این کار عالی بود، برای هر شرایطی یک کتابخانه رایگان وجود دارد؛ بنابراین من با یک کتابخانه شروع کردم و به تعداد آنها یکی پس از دیگری افزودم.
حدس بزنید چه اتفاقی افتاد؟ درنهایت پروژه من چیزی نبود بهجز یک مجموعه از کتابخانههای دسته سوم. این کار را نکنید. کتابخانهها را با دقت انتخاب کنید. تمام آنها بهخوبی نوشتهنشدهاند و قابلاعتماد نیستند.
بنابراین، توصیه من رعایت تعادل است. اگر درطول پروژه به مشکلی برخوردید که شخصی قبلاً با آن مواجه شده بود و با کمک یک کتابخانه مناسب موفق به حل آن شده بود، از آن استفاده کنید. اگر به HTTP client نیاز داشتید میتوانید از Retrofit استفاده کنید.
اگر نیاز به دانلود و مدیریت تعدادی تصویر داشتید، از Glide استفاده کنید.
Android Arsenal از یک پایگاهداده بزرگ با تقریباً تمام کتابخانههای موجود اندروید پشتیبانی میکند.
کتابخانههای بسیار خوبی وجود دارند که بسیار معروف و پایدار هستند.
این را هم بدانید که تمام کتابخانهها خوب نیستند و بعضیها کاربردهای محدودی دارند.
۳. با یک UI ساده و مرتب شروع کنید
اگر در یک شرکت بزرگ بهعنوان یک توسعهدهنده اندروید کار میکنید، طراحی UI/UX برنامه کاربردی را به طراحان بسپارید؛ بنابراین نگرانی در این مورد نخواهید داشت.
اما اگر برای یک استارتاپ و یا یک پروژه شخصی کار میکنید، احتمالاً باید به طراحی UI/UX هم توجه داشته باشید. به من اعتماد کنید: تنها با داشتن یک رابط کاربری خوب میتوانید به داشتن یک محصول خوب امیدوار باشید؛ یک رابط کاربری نامناسب میتواند کاملاً شانس داشتن یک محصول خوب را خراب کند.
Martin LeBlanc میگوید: «رابط کاربری مثل یک لطیفه است، اگر مجبور به توضیح دادن آن باشید، لطیفه خوبی نخواهد بود!»
اشتباهی که من زیاد در گذشته انجام میدادم، صرف وقت زیادی روی رابطها بود. اِلمانهای زیاد، باعث سردرگمی برای کاربران میشوند و اغلب حس ناخوشایندی به آنها دست میدهد. توصیه من این است که ساده شروع کنید؛ بسیار ساده و مرتب.
بهخصوص اگر مهارت طراحی خوبی ندارید، سعی کنید رابطهای خیلی پایهای و کاربرپسندی بسازید و اگر این مهارت را دارید میتوانید با بهبود زیبایی، تأثیر بهیادماندنی روی کاربرانتان بگذارید.
به یاد داشته باشید که رابط کاربریتان را در صفحات نمایش با سایزهای متفاوت تست کنید. هرگز از یک واحد ثابت اندازهگیری مثل px استفاده نکنید؛ همیشه از واحدهای دینامیکی مثل dp (یا sp برای متن) استفاده کنید.
در زیر من منابع مناسبی را معرفی میکنم:
- Dribbble: زمانی که نمیدانید از کجا باید شروع کنید، در انجمن فوقالعاده طراحان، به دنبال انگیزه باشید.
- Google Material Design: یک سیستم انطباقپذیر شامل راهنما، محتوا و ابزارهایی که بهترین شیوههای طراحی رابطکاربری را پشتیبانی میکند.
- روانشناسی موارد روزمره: یک کتاب خوب و قابلاستفاده برای زندگی روزمره از "Don Norman"
۴. تست، تست و باز هم تست
هردوی ما میدانیم تست برنامه بر روی شبیهسازها کافی نیست و اینکه باید بر روی دیوایسهای واقعی آنها را تست کنیم. ممکن است که حذف بعضی مراحل تست چندروزی در مرحله توسعه، زمان شما را ذخیره کند اما در مرحله تولید باعث صرف چندین هفته زمان بیشتر میشود!
یک مرحله تست مناسب به شما کمک میکند که قدرت، عملکرد و قابلیت استفاده برنامهتان را قبل از انتشار چک کنید.
چطور باید برنامهام را تست کنم؟ این یک مسئله گسترده است. چندین نوع تست وجود دارد و هرکدام از آنها اهداف خاصی دارند.
همانطور که در تصویر بالا میبینید، سه مرحله تست وجود دارد:
- Unit test: برای ارزیابی رفتار یک کلاس از برنامه کاربردی در یک زمان.
- Integration test: برای ارزیابی یا ارتباط بین سطوح stack در یک ماژول یا فعل و انفعالات بین ماژولهای مربوطه.
- UI test: برای ارزیابی رفتار و روند UI.
مطابق با کاربرد برنامه کاربردی، لازم است درمورد تعداد تستهای مختلفی که باید انجام دهید، تصمیمگیری کنید.
روندی که گوگل پیشنهاد میکند، تقسیم تستها به این صورت است که 70 درصد از تستهای کوچک (Unit test)، بیست درصد تستهای متوسط (Integration test)، ده درصد تستهای بزرگ (تستهای UI و تستهای end-to-end) استفاده کنید.
در زیر منابع مناسبی را معرفی میکنم:
- تست برنامههای کاربردی در اندروید: در اینجا تمام موارد موردنیاز برای تست برنامه کاربردی شما وجود دارد.
- TDD روی اندروید: بخشهای ویدئویی TDD.
۵. اندروید استودیو دوست شماست
قطعاً شما درحال حاضر از این IDE استفاده میکنید اما آیا از تمام پتانسیل آن استفاده میکنید؟
ابزارهای زیادی در اندروید استودیو ساخته شدهاند که در توسعه برنامه کاربردی به شما کمک میکنند. در اینجا تعدادی از آنها را که من اغلب بهکار میبرم، معرفی کردم:
- شبیهساز دستگاه برای تست رفتار برنامه کاربردی روی دستگاههای مختلف با نسخهها مختلف اندروید.
- تحلیلگر APK برای تحلیل حجم برنامه با بررسی محتوای APK
- گزارشگیر همزمان برای تحلیل دادههای همزمانی در CPU، حافظه و استفاده از شبکه.
- دستیار Firebase برای اتصال به برنامه کاربردی به Firebase و تمام سرویسهای آن که با چند کلیک به آن دسترسی پیدا میکنید.
- Vector studio منجر به تسهیل ایجاد یک منبع تصویری جدید برای هر حجمی میشود.
ویژگی منحصربهفرد اندروید استودیو این است که میتواند کامپیوتر شخصی شما را به یک منبع گرمایی تبدیل کند!!!
برای اطلاعات و ویژگیهای بیشتر میتوانید راهنمای کاربری اندروید استودیو را مشاهده کنید.
۶. همیشه از Git استفاده کنید
Git یک سیستم کنترل نسخه (VCS) است و در یک سطح خیلی پایهای، دو نکته جالب وجود دارد که VCS امکان انجام آنها را به شما میدهد: پیگیری تغییرات در فایلهای شما و تسهیل کار روی پروژههای بزرگ با چندین توسعهدهنده.
من سه سال پیش هیچ دلیل قانع کنندهای برای استفاده از گیت نداشتم و با خودم میگفتم که من به راحتی میتوانم یک نسخه بکآپ از برنامهام را به راحتی داشتهباشم.
درحال حاضر اما اجازه دهید به شما مطلبی را بگویم که کسی باید سه سال پیش به من میگفت: شما به Git نیاز دارید. Git باعث بهبود روند کاری شما میشود. چرا؟ دلایل را در زیر ببینید:
- کد شما با امنیت در cloud ذخیره میشود و در همهجا قابلدسترسی است.
- تمام نسخههای قبلی کد شما قابلدسترسی است. میتوانید نسخههای قدیمی را چک کنید و حتی اگر اشتباهی رخ داده بود، به عقب برگردید.
- کار گروهی ساده شده است. هر توسعهدهندهای میتواند روی یک شاخه جداگانه کار کند و درصورت نیاز، تغییرات میتوانند باهم ادغام شوند.
- در هزاران پروژه متنباز میتوانید شرکت کنید.
- با پلتفرمهایی مثل GitHub و BitBucket امکان ایجاد و نمایش پروژهتان را دارید.
دلایل بسیار دیگری هم وجود دارند اما امیدوارم این دلایل برای رساندن این پیام کافی باشند: «اگر فکر میکنید به Git نیازی ندارید، باید بگویم که اشتباه میکنید.»
۷. از چکلیست استفاده کنید
چگونه میتوانید از زمان درست انتشار برنامه کاربردیتان اطمینان حاصل کنید؟ در این مرحله بههیچوجه نباید عجول باشید و بهتر است این سؤالات را از خود بپرسید:
- تمام نقایص کد را برطرف کردهام؟
- بهاندازه کافی تست انجام دادهام؟
- نام و نسخه کد را در سایت Gradle بروزرسانی کردهام؟
- توانستم کد APK را تنظیم کنم؟
- برنامهام را محلیسازی کردهام؟
- حساب کاربریم را در Google Play آماده کردهام؟
اگر پاسخ شما به تمام این سؤالات، بله هست، میتوانید اقدام به انتشار کنید. به شما توصیه میکنم که برای بهینهسازی اندازه و منابع برنامه کاربردی، بهجای تولید APK، یک (Android App Bundle(aab، تولید کنید.
بعد از انتشار برنامه کاربردی در Google Play، همواره بازخورد کاربران و تمام تجزیهوتحلیلهایی که دارید را بررسی کنید، زیرا این موارد بسیار به ارتقای برنامه کاربردی شما کمک میکنند.
در اینجا میتوانید یک چک لیست مخصوص انتشار را که توسط توسعهدهندگان اندروید تهیه شده است، مشاهده کنید.
سخن پایانی
من سعی کردم بعضی از مهمترین درسهایی که در مدت تجربه کاری درزمینهٔ توسعه اندروید، یاد گرفتم با شما درمیان بگذارم. اطمینان دارم که درسهای خیلی بیشتری برای یادگرفتن وجود دارند.
اگر نکات مهم دیگری بهویژه برای مبتدیان به ذهن شما میرسد در قسمت نظرات با ما درمیان بگذارید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید