مواردی که من در طی 6 سال به‌عنوان یک توسعه‌دهنده اندروید یاد گرفتم!
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 9 دقیقه

مواردی که من در طی 6 سال به‌عنوان یک توسعه‌دهنده اندروید یاد گرفتم!

من تجربه 6 سال کدنویسی برای شرکت‌ها و برنامه‌های کاربردی را دارم. راه و روش کدنویسی و یا نحوه برخورد شما با کدها متناسب با تجربه شما تغییر می‌کند.

موقعیت شما باید به‌گونه‌ای باشد که هم‌زمان با افزایش تجربه، کدهای شما هم ارتقا یابند و اگر در چنین موقعیتی قرار ندارید، با ما همراه باشید تا در ادامه مقاله مواردی را برای شما توضیح دهیم.

۱. انتخاب معماری صحیح

اگر توسعه برنامه را در scratch آغاز می‌کنید، باید بدانید که این کار مزایای زیادی دارد.

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

اجرا و پشتیبانی از کد را همیشه مدنظر داشته باشید، انتخاب یک معماری صحیح در همان مراحل ابتدایی برای کد، کار هوشمندانه‌ای است.

معماری‌های زیادی ازجمله MVC، MVP، MVVM و MVI وجود دارند که به توسعه‌دهندگان اندروید در پشتیبانی، تست و توسعه آسان ویژگی‌های جدید کمک می‌کنند.

دیاگرام بالا نشان می‌دهد که چگونه تمام ماژول‌ها بعد از طراحی برنامه کاربردی با یکدیگر ارتباط برقرار می‌کنند. بسته به نیاز سازمانی که برای آن کار می‌کنید، ممکن است امکان انتخاب معماری برای برنامه را داشته باشید و یا نداشته باشید.

اکیداً به شما توصیه می‌کنم که از یک معماری خاص که ملزومات موردنیاز شما را فراهم کند، استفاده کنید.

بحث‌های زیادی درمورد این‌که بهترین معماری کدام است، وجود دارد.

طبق راهنمایی‌های توسعه‌دهندگان حرفه‌ای:

 «تنها یک‌راه خاص برای نوشتن برنامه‌های کاربردی که در هر زمینه‌ای بهترین باشد، وجود ندارد. گفته می‌شود که این معماری توصیه‌شده یک نقطه شروع خوب برای بیش‌تر موارد و چرخه‌های کاری است.»

۲. استفاده از بهترین IDE

اندروید استودیو سریع‌ترین ابزارها را برای ساختن برنامه‌های کاربردی برای هرنوع دستگاه اندرویدی فراهم می‌کند.

متأسفانه ما فقط از بخش کوچکی از این IDE را کشف می‌کنیم. اندروید استودیو ابزارهای بسیاری دارد، در ادامه مقاله ابزارهای مختلفی را که باید هرروز در توسعه به کار ببریم، معرفی می‌کنیم.

ویرایشگر لایه بصری

در لایه ویرایشگر، می‌توان به‌جای نوشتن لایه XML به‌صورت دستی، با درگ کردن اِلِمان‌های رابط کاربری در یک ویرایشگر طرح بصری، به‌سرعت لایه‌هایی را ایجاد کرد. ویرایشگر طراحی می‌تواند لایه‌ها را در دستگاه‌ها و نسخه‌های مختلف اندروید نمایش دهد و شما می‌توانید به‌صورت پویا سایز لایه را برای اطمینان از اینکه در تمام سایزهای مختلف نمایشی به‌خوبی کار می‌کند، تغییر دهید.

لایه ویرایشگر در ساخت یک لایه جدید با لایه مقید، بسیار قوی عمل می‌کند.

تحلیل‌گر APK

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

با استفاده از تحلیل‌گر APK، شما می‌توانید:

  • حجم نسبی و مطلق فایل‌ها را در یک APK نشان دهید، مثل فایل‌های منبع DEX و اندروید.
  • نحوه ساخت فایل‌های DEX را درک کنید.
  • می‌توانید یک مقایسه جانبی از دو APK انجام دهید.

برای اطلاعات بیش‌تر این لینک را مشاهده کنید تا مطالب بیش‌تری درمورد تحلیل‌گر APK بخوانید.

شبیه‌ساز سریع

اگر هدف شما نسخه‌های مختلف اندروید است و می‌خواهید برنامه کاربردی خودتان را روی سطوح مختلف API تست کنید، استفاده از یک شبیه‌ساز خیلی بهتر از یک دستگاه واقعی است.

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

تست برنامه کاربردی در شبیه‌ساز نسبت به روش‌های دیگر که با دستگاه واقعی کار می‌کنند، سریع‌تر و آسان‌تر است.

هرچند که توصیه می‌کنم در آخر کار حتما برنامه‌تان را با یک دیوایس واقعی به صورت کامل تست کنید!

گزارش‌گیر

ابزارهای گزارش‌دهی اندروید امکان ارائه داده‌های هم‌زمان را فراهم می‌کنند و به درک چگونگی استفاده برنامه شما از CPU، حافظه، شبکه و باتری کمک می‌کنند.

گزارش‌گیرهای مختلفی مثل گزارش‌گیر CPU، گزارش‌گیر حافظه، گزارش‌گیر شبکه و گزارش‌گیر انرژی وجود دارند.

گزارش‌گیر اندروید با اندروید نسخه 5 و بالاتر سازگار است. با استفاده از گزارش‌گیرهای پیشرفته در اندروید استودیو، می‌توانید مشاهده کنید که چگونه بخش‌های مختلف برنامه کاربردی شما منابع CPU و حافظه را مصرف می‌کنند.

گزارش‌گیر حافظه به ما درزمینهٔ رفع نواقص حافظه با استفاده از Leak Canary کمک می‌کند.

۳. پیکربندی مناسب

برای ایجاد نسخه‌های مختلف از برنامه کاربردی از یک پروژه و نحوه مدیریت مناسب موارد وابسته و ایجاد تنظیمات، می‌توانید متغیرهای مختلفی بسازید.

در بیش‌تر سازمان‌ها، محیط‌های QA و PROD وجود دارند. برای ساخت برنامه‌های کاربردی مختلف که در هر محیطی قابل‌استفاده باشند، می‌توانید URL های مختلفی تعیین کنید.

همچنین می‌توانید نسخه‌های مختلفی از برنامه برای دستگاه‌های مختلف براساس سطوح API و یا سایر دستگاه‌ها بسازید.

۴. ارتقای کد با استفاده از Lint Checks

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

اگر در لایه‌ها از namespace استفاده‌شده باشد، Lint به شما می‌گوید و این فضای قابل‌توجهی را به‌وجود می‌آورد.

سایر موارد ساختاری را هم مثل استفاده از المان‌های نادرست و یا فراخوانی‌های API که نسخه API موردنظر پشتیبانی نمی‌کند، به شما می‌گوید. توصیه می‌شود که از نسخه‌های جدید در دسترس برای هر کتابخانه‌ای استفاده کنید.

۵. تست برنامه کاربردی

توسعه تست محور که به‌عنوان TDD شناخته می‌شود، یکی از راه‌هایی است که به شما تضمین می‌دهد تمام کدهای جدید با تست همراه هستند. با پیروی از این فرایند، شما برای هرچیزی که اضافه می‌کنید، قبل از آن‌که کدی را برای اجرا بنویسید، تست را می‌نویسید.

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

سه نوع تست برای اندروید موجود است:

۱. Unit test

از unit test برای تست کردن روش‌ها و ماژول‌های کوچک استفاده می‌شود. برای انجام این تست‌ها نیاز به هیچ شبیه‌ساز یا دستگاه واقعی نیست، چون آن‌ها در JVM اجرا می‌شوند.

JUnit و Robolectric فریمورک‌های unit test اندرویدی معروفی هستند که منجر به اجرای سریع‌تر تست‌ها به‌وسیله اجرای تست‌ها در JVM می‌شوند.

۲. Instrumentation test 

Instrumentation test به فریمورک اندروید بستگی دارد، این تست‌ها به دلیل وابستگی زیاد، به شبیه‌ساز یا دستگاه واقعی برای اجرا نیاز دارند. ما از Mockito برای mock کردن اشیاء که در Instrumentation test استفاده می‌شوند، استفاده می‌کنیم.

۳. UI test

تست‌های UI برای تشخیص اینکه یک فعالیت به‌درستی انجام می‌شوند و یا نماها به‌درستی نشان داده می‌شوند، بکار می‌رود. Espresso و UI Automater ابزارهایی با استفاده گسترده درزمینهٔ تست UI هستند.

در زیر ساختار پکیجی را می‌بینید که این تست‌ها در برنامه کاربردی در آن‌جا وجود دارند.

Test: تست‌های واحد در این فولدر هستند. این تست‌ها در JVM اجرا می‌شوند و نیازی به شبیه‌ساز یا دستگاه واقعی ندارند.

Android test: تمام تست‌های UI و Instrumentation test در این فولدر هستند. این تست‌ها به دستگاه اندروید واقعی یا شبیه‌ساز برای اجرا نیاز دارند.

۶. استفاده از VCS یا سیستم کنترل نسخه

Git و BitBucket رایج‌ترین سیستم‌های کنترل نسخه هستند.

کنترل نسخه، تغییراتی که روی فایل‌ها اعمال می‌کنید، دنبال می‌کند؛ بنابراین شما یک مستند ازآنچه انجام‌شده است، دارید و هر زمان که لازم باشد، می‌توانید به نسخه‌های خاصی که می‌خواهید، دست پیدا کنید.

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

با استفاده از Git، کد شما امن می‌شود. شما می‌توانید تغییرات را دنبال کنید و می‌توانید از مخازن مختلف مربوط به یک نسخه محافظت کنید.

Git امکان نمایش کارتان را برای شما فراهم می‌کند و می‌توانید در بسیاری از پروژه‌های متن‌باز مشارکت کنید.

۷. نشر دانش

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

بدانید که چگونه می‌توان با استفاده از فایل ذخیره اصلی به APK دسترسی پیدا کرد. شما حتی می‌توانید آن‌ها را روی فایل Gradle برای تسهیل فرایند اتصال، نصب کنید.

۸. استفاده از Crashlytics

Crashlytics قدرتمندترین و درعین‌حال سبک‌ترین راه‌حل گزارش خطا است.

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

این همچنین بیش‌ترین خطاهای گزارش‌شده و نرخ درصد خطاها را هم ارائه می‌دهد.

Crashlytics همچنین شامل Crashlytics Beta است که سرویسی است که به شما امکان می‌دهد پیش از انتشار، به‌آسانی برنامه‌های کاربردی iOS و اندروید را در اختیار آزمایش‌کنندگان قرار دهید تا بتوانید سریع‌تر بازخوردها را دریافت کنید.

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
در انتظار ثبت رای

/@alireza.mzh
علیرضا معمارزاده
junior level developer

Student of Software Engineering, python Developer, i love programming and game

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

علیرضا معمارزاده

junior level developer

مقالات برگزیده

مقالات برگزیده را از این قسمت میتوانید ببینید

مشاهده همه مقالات