تجربیاتی ارزشمند از یک سِنیور دولوپر اندروید

نویسنده : سید ایوب کوکبی ۱۶ خرداد ۱۳۹۷

تجربیاتی ارزشمند از یک سِنیور دولوپر اندروید

سزار فریرا – سِنیور دولوپر اندورید – که علاقه‌ی خاصی به اندروید و Node.js دارد تجربیات گرانقدرش در مسیر فراگیری برنامه‌نویسی اندروید را در سایت مدیوم به اشتراک گذاشته است. ما نیز عین مطلب را ترجمه و خدمت شما عزیزان ارائه می‌دهیم. باشد که چراغ راهتان شود!

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

مردم دو دسته‌اند – آن‌هایی که به سختی و با آزمون و خطا چیزی را یاد می‌گیرند و آن‌هایی که از تجربیات و مشاوره‌ی دیگران کمال استفاده را می‌برند. این فهرستی از نکاتی است که بنده در طی سالیان مدید آموخته و می‌خواهم با شما به اشتراک بگذارم:

  1. پیش از اضافه کردن هرگونه کتابخانه‌ی جانبی، خوب فکر کنید، این کار واقعاً مسئولیت زیادی دارد؛
  2. چیزی که کاربر نمی‌تواند ببیند را به رابط کاربری برنامه اضافه نکنید؛
  3. از دیتابیس فقط زمانی که واقعا به آن نیازمندید استفاده کنید؛
  4. سریع‌تر از آن که فکرش را بکنید به محدودیت ۶۵ هزار متدی اندروید می‌رسید، اینجاست که تکنیک Multidexing به کمک شما می‌آید؛
  5. RxJava بهترین جایگزین AsyncTasks و چیزی فراتر از آن است؛
  6. Retrofit بهترین کتابخانه‌ی شبکه در اندروید است ؛
  7. کدهایتان را با Retrolambda کوتاه‌تر کنید؛
  8. برای به حداکثر رسانی هیجان RxJava را با Retrofit و Retrolambda ترکیب کنید؛
  9. من از EventBus استفاده می‌کنم و واقعا معرکه است ولی نه آنقدر که باعث شلخته شدن کدبیس برنامه شود؛
  10. فایل‌ها را بر اساس فیچرها یا قابلیت‌های اپلیکیشن دسته‌بندی کنید؛
  11. هر چیزی را از ترد اصلی برنامه خارج کنید؛
  12. از ابزار Lint برای بهینه‌سازی Layout و سلسله‌مراتب ویوها استفاده کنید تا اگر ویوی خاصی اضافی بود بتوانید حذفش کنید؛
  13. در صورتی که از گریدل استفاده می‌کنید، با هر روشی که می‌توانید سرعتش را بیشتر کنید؛
  14. وقتی Build می‌کنید پروفایلش کنید تا مدت زمان بیلد شدن را ببینید؛
  15. از یک معماری خوب برای کدهای خود استفاده کنید؛
  16. تست کردن زمان می‌برد ولی به محض اینکه به آن عادت کنید سرعت و قدرت شما بیشتر از زمانی می‌شود که بدون تست کد می‌نویسید؛
  17. از تزریق وابستگی برای ماژولار کردن و آسان‌تر نمودن فرایند تست استفاده کنید؛
  18. به پادکست‌های عالی fragmented گوش کنید، بی‌نظیرند [البته باید زبان انگلیسی‌تان خوب باشد]؛
  19. هرگز از ایمیل شخصی خود را برای انتشار برنامه در مارکت‌ها استفاده نکنید؛
  20. همیشه از input typeهای مناسب برای دریافت اطلاعات استفاده کنید؛
  21. از آنالیتیکز برای پیدا کردن الگوی مصرف کاربران و ایزوله کردن باگ‌ها استفاده کنید؛
  22. همیشه در جریان جدیدترین کتابخانه‌ها باشید (با dryrun سریع‌تر تستشان کنید)؛
  23. سرویس‌های شما باید کارشان را به خوبی انجام دهند و به سرعت نابود شوند [تا بیهوده منابع را هدر ندهند]؛
  24. از Account Manager برای پیشنهاد نام کاربری و آدرس‌های ایمیل استفاده کنید؛
  25. از یکپارچه‌سازی مداوم (CI: Continuous Integration) برای Build کردن و توزیع نسخه‌های بتا و apk های خروجی استفاده کنید؛
  26. سرور یکپارچه‌سازی مداوم را خودتان راه‌اندازی نکنید، نگهداری‌اش به خاطر بحث‌هایی مثل فضای دیسک، امنیت داده‌ها، بروزرسانی سرور، حفاظت از حملات SSL و … وقت‌گیر است. از ابزارهایی مثل circleci, travis یا shippable استفاده کنید، ارزان هستند و دیگر بابت مسائل فنی دغدغه‌ای نخواهید داشت؛
  27. فرایند توزیع برنامه در پلی‌استور را به صورت خودکار درآورید؛
  28. اگر کتابخانه‌ای که از آن استفاده می‌کنید حجم زیادی داشت و شما فقط به بخش کوچکی از آن نیاز داشتید، باید دنبال کوچکتر کردنش باشید (مثلاً با استفاده از proguard)
  29. از ماژول‌ها بیشتر از نیازتان استفاده نکنید. در صورت وجود ماژول‌هایی که به صورت مداوم تغییری در آن‌ها اعمال نمی‌شود، مهم است این موضوع را هم در نظر داشته باشید که مدت زمان لازم برای کامپایل صفر تا صد آن‌ها (مثل بیلدهای CI) یا حتی بررسی اینکه ماژول‌های قبلی کامپایل شده‌اند یا نه می‌تواند تا ۴ برابر بیشتر از زمانی باشد که وابستگی‌های پروژه به سادگی از فایل‌های باینری jar و aar لود شوند.
  30. وقتش رسیده تا از PNG به سوی SVG حرکت کنید؛
  31. کتابخانه‌‌ها را در قالب کلاس‌های انتزاعی بسازید، بدین ترتیب سوئیچ کردن به یک کتابخانه‌ی جدید ساده‌تر است چون همه چیز در یک مکان واحد انجام می‌شود (مثلا (“AppLogger.d(“message می‌تواند حاوی (Log.d(TAG, message باشد ولی بعدها که بفهمید (Timber.d(message انتخاب بهتری است به راحتی جایگزینش کنید)؛
  32. اتصالات اینترنتی و نوعشان را مانیتور کنید (مثلا وقتی وای‌فای روشن است داده‌های بیشتری بروزرسانی شود
  33. منبع انرژی و باتری را مانیتور کنید (به عنوان مثال وقتی گوشی در حال شارژ باشد داده‌های بیشتری آپدیت شود یا وقتی مقدار شارژش پایین است، بروزرسانی داده‌ها متوقف شود
  34. واسط کاربری مثل یک جوک است، وقتی مجبورید آن را توضیح دهید، واسط خوبی طراحی نکرده‌اید؛
  35. آزمون‌ها برای پرفرمنس عالی هستند: پیاده‌سازی آرام (ولی صحیح)، سپس بهینه‌سازی آن هیچ تستی را با شکست مواجه نمی‌کند.
بخوانید  قسمت دوم :اکتیویتی ها

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

سید ایوب کوکبی

نویسنده و مترجم...

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *