آنچه بعد از دو سال برنامه‌نویسی اندروید آموختم-قسمت سوم

در قسمت اول و دوم این مطلب ۱۰ تا از توصیه‌های Aritra Roy را با هم مرور کردیم. در این مطلب بخش دیگری از توصیه‌های وی را با هم می‌خوانیم.

۱۱- با تنظیم بیلد گریدل پنج ساعت در هفته در وقت صرفه‌جویی کن

بسیار محتمل است که از اندروید استودیو و گریدل برای توسعه برنامه‌های اندروید استفاده کنی. گریدل عالی ولی کند است و وقتی پروژه کمی بزرگ‌تر شود کندتر هم می‌شود.

ساعت‌های بی شماری را به باد می‌آورم که بیکار می‌نشسم تا بیلد گریدل تمام شود. در زمان‌های شلوغی کار به راحتی یک ساعت از وقت من صرف بیلدهای گریدل می‌شود و این یعنی ۵ ساعت در هفته و ۲۰ ساعت در ماه.

اما راه‌هایی هست تا گریدل را سریع‌تر کنی.

برای این کار اینجا و اینجا را ببین. با استفاده از این رهنمودها و بهینه‌سازی مناسب، زمان بیلد من از چهار دقیقه به حدود ۳۰ ثانیه رسید.

۱۲- تست کن و تست کن و بعد باز هم تست کن

هیچ چیزی از تست کردن مهم‌تر نیست. مهم‌ترین کار در لیست کارهایت باید تست کردن باشد.

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

من یک بار مرتکب این اشتباه شدم و به خاطر عجله برنامه را بدون تست کردن منتشر کردم. منتظر بودم کاربران برنامه با خطاها مواجه شده و آن‌ها را گزارش کنند تا من آن‌ها را رفع و رجوع کنم.

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

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

۱۳- چندپارگی اندروید شیطانی است در لباس مبدل

android-fragmentation

چندپارگی (یا fragmentation) بزرگترین مشکل اندروید است و به نظر می‌رسد که گوگل بی‌خیال آن شده است ولی تو مجبوری با آن زندگی کنی.

تنوع عظیمی از دستگا‌های اندرویدی با اندازه صفحه نمایش متفاوت و ویژگی‌های سخت‌افزاری متفاوت و تعداد زیادی سازنده که اندروید را برای دستگاه‌های خود تغییر می‌دهند وجود دارد.

علاوه بر آن نسخه‌های متفاوت اندروید که در هر کدام گوگل ویژگی‌های جدیدی اضافه می‌کند یا برخی از ویژگی‌ها را حذف می‌کند و همه این‌ها حجم کار تو را بیشتر و بیشتر می‌کند (برای مثال اینجا را بخوان).

برای مثال هیچ برنامه‌نویس اندرویدی وجود ندارد که تا به حال از SharedPreferences استفاده نکرده باشد. ولی همین کتابخانه بسیار پر کاربرد در گوشی گلکسی S سامسونگ که اندروید ۲.۲ دارند از کار می‌افتد (گزارش خطا را در اینجا ببین).

«هیچگاه فرض را بر راین نگذار که چیزی کار می‌کند فقط به خاطر این که این طور به نظر می‌رسد»

۱۴- از همین امروز از Git استفاده کن

اگر هنوز از گیت (Git) استفاده نمی‌کنی همین الان برو سراغش.

وقتی توسعه اندروید را شروع کردم متاسفانه نمی‌دانستم که Git چه جواهری است. هر روز یک نسخه از کل پروژه را بکاپ می‌گرفتم و یک نسخه را در هارد خودم و یکی را هم در ابر (Cloud) ذخیره می‌کردم. به نظر احمقانه می‌آید؟ واقعا احمقانه است!

گیت به طرز حیرت انگیزی کار را بهبود می‌دهد. اگر یکی از من بپرسد یک ابزار را نام ببر که هر روز از آن استفاده می‌کنی و نمی‌توانی استفاده از آن را متوقف کنی پاسخ من همیشه و همیشه گیت است.

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

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

جایزه: اگر تازه شروع کرده‌اید و نمی‌توانی هزینه اشتراک ماهانه GitHub برای مخاذن خصوصی را بپردازی، می‌توانی از BitBucket استفاده کنی که رایگان است.

توضیح مترجم: خود من از GitLab استفاده می‌کنم که هم رایگان است و هم امکانات فوق‌العاده‌ای دارد.

۱۵- کار را برای هکرها دشوار کن

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

مطمئنا نمی‌خواهی که این اتفاقات برای برنامه‌ات بیافتد؟

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

همچنین باید کلیدهای رمزنگاری را به صورت امن یا در سرور یا به صورت محلی و در خود گوشی (اگر لازم است) ذخیره کنی. همچنین باید کاری کنی که امکان بکاپ‌گیری از داده‌ها توسط ADB یا Android Debug Bridge ممکن نباشد. اگر داده‌های حساس را در دیتابیس ذخیره می‌کنی حتما باید آن‌ها را درهم‌ریخته (Obfuscate) کنی.

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

چند راه برای جلوگیری از تغییر دادن برنامه وجود دارد. چیزی به اسم امنیت ۱۰۰ درصد وجود ندارد. هر هکر ماهر و با ابزارها و امکانات مناسب و با صبر و حوصله می‌تواند برنامه را هک کند.

تنها کاری که می‌توانی بکنی این است که کار هکر را سخت‌تر و حتا خیلی سخت‌تر کنی.

جایزه: مطالعه اینجا و اینجا نقطه شروع خوبی برای امن کردن برنامه است.

۱۶- روی دستگاه‌های ضعیف توسعه بده

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

یک دستگاه عالی بسیاری از معایب برنامه را مخفی می‌کند. فرض کن که کار سنگینی را در UI Thread انجام می‌دهی که منجر به کندی و تاخیر UI برنامه می‌شود. در یک دستگاه عالی هرگز متوجه این تاخیر و کندی نخواهی شد.

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

۱۷- روی یادگیری الگوهای طراحی وقت بگدار

این یک سرمایه‌گذاری عالی است که تا ابد به تو سود می‌رساند.

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

از همین امروز وقت بگذار تا الگوهای طراحی جاوا (Java Design Patterns) را فرا بگیری. این یک پروژه جاوا در گیت‌هاب است که همه الگوهای طراحی را در عمل نشان می‌دهد.

برای شروع، مهم‌ترین آن‌ها مثل Singleton و Adapter و Factory Method و Itrator و Dependency Injection و معماری Event Driven و Callback و Strategy و Facade و Producer/Consumer را یاد بگیر.

زیاد به نظر می‌آید؟ واقعا این طور نیست. وقتی که با اینها کار کنی عاشق‌شان می‌شوی.

نکته حرفه‌ای: کتابهایی مثل الگوهای طراحی GoF و Refactoring نوشته مارتین فالر (Martin Fawler) و Effective Java نوشته Joshua Bloch را بخوان.

۱۸- وقت آن است که تو هم چیزی را برگردانی

همه ما کمک‌های زیادی را ار آدم‌های دور و برمان و از اینترنت گرفته‌ایم. این را بپذیریم.

 

 

 

copying-and-pasting-book-cover

همیشه هر وقت به مشکل می‌خوری اول کاری که می‌کنی گوگل کردن مساله و رفتن به اولین لینک جواب از استک (StackOverFlow) است. بعضی وقتها عجله داری و مجبور می‌شوی راه‌حلی که بیشترین و بالاترین رای را در SO دارد کپی بچسبان کنی.

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

روزی را به یاد بیاور که در فهم یک موضوع دشوار کاملا جدید گیر کرده بودی و یک وبلاگ عالی پیدا کرده بودی که مساله را مثل آب خوردن برات ساده کرده بود. مطمئن باش یک نفر از وقت تماشای فیلم خود زده است تا بتواند آن مطلب را بنویسد.

(خود من چقدر از وقت کارهای دیگرم زدم تا در اسمارت‌لب برای شما بنویسم 🙂 )

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

همه ما سرمان شلوغ است و مدیریت کردن زمان برای این که بتوانیم کاری برای دیگران انجام بدهیم بسیار سخت است. با این حال سعی کن راهی پیدا کنی تا بتوانی در انجمن توسعه‌دهندگان مشارکت کنی و آن را غنی‌تر کنی.

21 فکر می‌کنند “آنچه بعد از دو سال برنامه‌نویسی اندروید آموختم-قسمت سوم

  1. مرضیه

    سلام
    امروز به طور اتفاقی به اینجا رسیدم.
    و سری این مقاله را خوندم.خیلی جالب بود و به نکات خوبی اشاره کردید
    ممنون از وقتی که صرف می کنید.

    موفق باشید
    مرضیه

    پاسخ
  2. علی

    سلام. خیلی نکات خوب و به در بخوری گفتین! مقاله های دیگه اتون هم با اینکه هنوز نخوندم ولی عالی به نظر میرسه! ممنون وقتی که برای اشتراک تجربیاتتون میزارین! درکل دمت گرم!

    پاسخ
  3. حسین

    سلام
    لطفا آموزش فارسی افزایش سرعت گریدل که لینک هاش رو توی شماره ۱۱ این مقاله گذاشتید رو هم بزارید
    ممنون

    پاسخ
  4. جواد

    عالی بود

    فقط شما که مترجم هستید برای لینک هایی که معرفی کردید ، دستتون بازه ، کاش لینک هایی هم بود که ترجمه شده باشند 🙁

    پاسخ
    1. علی بهزادیان نژاد نویسنده

      در این دوره زمانه همه باید زبان انگلیسی را بدانیم. پس تلاش کنید تا بر این زبان مسلط شوید.

      پاسخ
  5. صادق

    سلام تازه شرو کردم به خوندن اسمارت لب تازه کارم باید بگم واااقعا یدونه اید D: همه ی مطالب عالین من کلی از گمشدهامو پیدا کردم . کلا زیاد به سایتا ی فارسی اعتقاد ندارم ولی اینجا عالیه
    این ۳ قسمتم خیلی خوب بودن

    پاسخ
  6. دیوید

    تبریک. شیوه نوشتاری فوق العاده و جذابی دارید که خواننده رو مجبور میکنه تا انتهای متن رو بخونه.
    سایتتون خیلی کاربردی و مفیده هرگز این سایت رو فراموش نمیکنیم و مرتب اون رو چک میکنم
    موفق باشید.

    پاسخ
    1. علی بهزادیان نژاد نویسنده

      متشکرم! ولی باید مجددا بگم که این مطلب ترجمه است و من سعی کردم تا حد امکان و توان دقیق باشه و لحن نوشته اصلی رو داشته باشه

      پاسخ
  7. فراز

    خیلی ممنون از سایت فوق العاده و عالی که دارید واقعا خوشحالم تو کشور ماهم هستند مهندسای نابغه ای مثل شما که تجربیات خودشون رو به دیگران منتقل میکنند تا دیگران هم بتوانند سریع رشد کنند
    هرچقدر تشکر کنم باز هم کم هست بازم خیلی ممنون از سایت عالیتون و من تنها کاری که میتوانم بکنم معرفی این سایت به همه دوستانی هست که میخواهند اندروید رو به بهترین شکل ممکن شروع کنند

    پاسخ
  8. hamid

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

    پاسخ
  9. wajid

    سلام استاد گرامی.
    من از افغانستان هستم و محیط برنامه نویسی اینجا خیلی محدود ونا آشنا است.
    من یک سورس تقویم دانلود کردم Droidpersiancalendar
    میخواهم آنرا با اندروید استودیو بیلد کنم اما این خطا را میدهد

    Createprocess error=2 the system cannot find the file specified .
    a href =open file: D :\Android studio\ Droidpersiancalendar\persiancalender\built.gradle

    پاسخ
    1. علی بهزادیان نژاد نویسنده

      احتمالا پروژه مورد نظر فایل‌های بیلد گریدل رو نداره. توصیه می‌کنم به جای باز کردن پروژه (open) در اندروید استودیو، از گزینه Import استفاده کنید تا فایل‌های بیلد مورد نظر رو بسازه براتون.

      پاسخ
  10. مراداف

    سلام.
    من هم امروز به طور اتفاقی به اینجا رسیدم.

    چند نکته برای سئو شدن بهتر مطالبتون:
    یک عنوان مناسب رو لینک بدید به مقالات دیگرتون، لینک کردن کلمه “اینجا” به یک مقاله دیگه باعث میشه رتبه سئوی شما روی کلمه “اینجا” بالا بره که مسلما چیزی نیست که شما بخواین.

    بهتره مثلا بگین:
    برای آشنایی بیشتر با “اسم مقاله رو بنویسین و لینکش بدین به مقاله مورد نظر”

    امیدوارم کمکی کرده باشم که مطالبتون بیشتر دیده بشن. حیفه این تجربیات در دسترس تعداد کمی باشه.

    پاسخ
  11. mahmoud

    (خود من چقدر از وقت کارهای دیگرم زدم تا در اسمارت‌لب برای شما بنویسم ? )

    سلام. ابتدا بابت وقت ارزشمندی که برای ما گذاشتید صمیمانه تشکر میکنم. و باید بگم این مقاله یکی از بهترین مقاله هایی بود که تا الان خوندم.
    برای شما آرزوی شادی و سلامتی میکنم. 🙂

    پاسخ

دیدگاهتان را بنویسید

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