آنچه دو سال برنامه نویسی اندروید به من آموخت

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

آنچه دو سال برنامه نویسی اندروید به من آموخت

در هر کاری استفاده از تجربه دیگران ارزشمند است. دنیای برنامه‌ نویسی و بخصوص برنامه نویسی اندروید با توجه به عمر کوتاهی که دارد از این قاعده مستثنی نیست. استفاده از تجربه دیگران باعث می‌شود تا راه‌های اشتباه دیگران را دوباره تکرار نکنیم و همواره بهترین انتخاب‌ها را داشته باشیم. مهر تایید این حرف، کلام ارزشمند حضرت امام علی (ع) است که می‌فرمایند:

ثمره تجربه، گزينش نيكوست. امام علی (ع)

مقاله‌ای که می‌خوانید ترجمه و بازگردانی مطلبی تحت عنوان What 2 Years of Android Development Have Taught Me the Hard Way در وب‌سایت مدیوم بوده که در آن، آقای آریترا روی، تجربیات دو ساله خود در حوزه برنامه نویسی اندروید را با دیگران به اشتراک گذاشته است. سعی می‌کنیم بدون دخل و تصرف، گفته‌های ایشان را در اختیار شما عزیزان قرار دهیم تا برنامه نویسی اندروید را بهتر آغاز کنید. با اسکارپ همراه باشید.

……………………………………………………………………………………………………………………………………………………………………..

هنوز سال ۲۰۱۴ را به یاد دارم، آن روزی که تصمیم گرفتم برنامه نویسی اندروید را شروع کنم. تصمیمی که در واقع بهترین تصمیم زندگی من بود. الان ۲٫۵ سال از آن ماجرا می‌گذرد و هنوز در حال یادگیری اندروید هستم. وقتی شروع کردم، مربی یا کسی را نداشتم که روش‌های درست برنامه نویسی را به من آموزش دهد. در آن مدت با اشتباهات زیادی سروکله زدم و وقت زیادی هم بابت این موضوع تلف شد. البته با هر خطایی تجربه‌ام افزایش می‌یافت و در دفعات بعد اشتباهات قبلی را تکرار نمی‌کردم. ۱٫۵ سال به همین منوال گذشت و کم کم با افراد و توسعه‌دهنده‌های باهوش و باتجربه آشنا شدم که اطلاعات و راهنمایی‌های خوبی در اختیار من می‌گذاشتند. در این مرحله، به سختی، چیزهای جدیدی یاد گرفتم و با چه کنم، چه نکنم‌های زیادی آشنا شدم. گهگاهی که از عهده‌ام بر می‌آمد در StackOverflow و GitHub به سوالات سایر توسعه‌دهندگان پاسخ می‌دادم و در حد توان فعالیت می‌کردم.

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

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

۱- چرخ را دوباره اختراع نکنید.

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

پیشنهاد: سایت Android Arsenal پایگاه داده‌ای از انواع کتابخانه‌های اندرویدی است که پیشنهاد می‌کنیم حتما چک کنید.

۲- کتابخانه‌ها را هوشمندانه انتخاب کنید.

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

تکنیک پیشرفته: با استفاده از Dryrun امکان تست هر کتابخانه‌ی اندرویدی از طریق خط فرمان وجود دارد.

۳- تا می‌توانید کدهای بیشتری بررسی کنید.

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

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

پیشنهاد: در این لینک، لیستی از بهترین کتابخانه‌های اندرویدی [به تفکیک گروه] معرفی شده و در این لینک تقریبا همه اپلیکیشن‌های متن‌باز اندروید معرفی شده است.

۴- به خاطر خدا هم که شده، استانداردهای کدنویسی را رعایت کنید.

اگر کدنویسی را با نوشتن مقایسه کنید، استانداردهای کدنویسی چیزی همانند دستخط شماست.

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

کد، شعر است.

اگر قطعه کدی نوشتید و همکلاسی شما چند روزی با شما حرف نزد، شاکی نشوید!

بخوانید  افزایش 63 درصدی نصب اپلیکیشن در مارکت‌ها

پیشنهاد: برای شروع استاندارد نویسی به این لینک و این لینک مراجعه کنید.

۵- به ProGuard نیاز دارید، بله به آن نیاز دارید!

هرگز بدون استفاده از ProGuard برنامه‌های خود را در پلی‌استور منتشر نکنید. پروگارد علاوه بر فشرده و کم‌حجم کردن کدها با مبهم‌سازی کد از مهندسی معکوس برنامه و درک ساختار کد نیز جلوگیری می‌کند. این ابزار به صورت کاملا رایگان و همراه Android SDK منتشر می‌شود؛ بنابراین دلیلی به استفاده نکردن از آن نیست. بسیاری از توسعه‌دهندگان را دیده‌ام که بدون پروگارد، برنامه‌ی خود را در مارکت منتشر می‌کنند. مهندسی معکوس و درک ساختار چنین برنامه‌هایی حتی برای هکرهای کم‌تجربه و آماتور نیز امکان‌پذیر است.

تکنیک پیشرفته: اگر دنبال تامین امنیت بیشتر هستید توصیه می‌کنیم از ابزار حرفه‌ای‌تر DexGuard استفاده کنید.

۶- از یک معماری درست برای برنامه نویسی اندروید استفاده کنید.

در برنامه نویسی اندروید پیش از انجام هر کاری لازم است یک معماری درست انتخاب کنید. شما می‌توانید از معماری (MVP (Model-View-Presenter استفاده کنید. این معماری کد را به لایه‌های مختلفی شکسته تا انعطاف‌پذیری و مدیریت آن بهبود یابد. برای آشنایی با این معماری می‌توانید از پروژه دمو که در گیت‌هاب منتشر شده الگو بگیرید. اگر درک معماری برای شما سخت بود، می‌توانید به راهنمای دقیق MVP برای افراد مبتدی مراجعه کنید.

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

۷- به  رابط کاربری توجه ویژه‌ای داشته باشید.

Design UI-UX

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

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

بهتر است به جای اضافه کردن عناصر جدید به طراحی، تا جایی که راه دارد اضافه‌ها را حذف کنید تا به یک طراحی مینیمال و خلوت برسید.

پیشنهاد: دریبل و متریال‌آپ جای خوبی برای الهام گرفتن از سایر گرافیست‌ها و طراحان UI است. همچنین برای علاقه‌مندان طراحی، مطالعه یکی از پرفروشترین کتاب‌های آمازون تحت عنوان The Design of Everyday Things را توصیه می‌کنم.

۸- آنالیز؛ بهترین دوست شما

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

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

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

۹- یک نینجای بازاریابی باشید.

اگر یک برنامه نویس انفرادی هستید تنها نباید به برنامه نویسی اندروید اکتفا کنید بلکه [برای موفقیت و کسب درآمد] لازم است تا درک خوبی از مباحث بازاریابی هم داشته باشید.

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

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

بخوانید  پیش گفتار:چرا من باید برنامه نویس اندروید بشم؟!

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

۱۰- اکنون زمان بهینه‌سازی برنامه شماست.

بهینه سازی برنامه چیزی است که اغلب ما از انجام آن طفره می‌رویم اما بهتر است و در واقع لازم است این کار را حتما انجام دهید. بین نوشتن یک کد معمولی و کد بهینه تفاوت‌های زیادی هست. کدی بنویسید که سریعتر اجرا شود، حافظه و فضای ذخیره‌سازی کمتری مصرف کند. یک برنامه غیربهینه اگرچه در شرایط نرمال به خوبی کار می‌کند اما همین برنامه در شرایط خاصی [کمبود رم، حافظه ذخیره‌سازی و غیره]، چهره واقعی خود را نشان می‌دهد. میزان حافظه مصرفی برنامه و نشتی حافظه را چک کنید. به خاطر بسپارید، یک نشتی کوچک می‌تواند کشتی بزرگی را غرق کند. زمانی را برای درک عملکرد Garbage Collector در زبان جاوا، ساخت Heap Dump ها و آنالیز اشیاء برنامه صرف کنید.

تکنیک پیشرفته: برای شناسایی نشتی‌های حافظه از ابزار Leak Canary استفاده کنید. این ابزار با خودکارسازی این کار موجب صرفه‌جویی زیادی در زمان خواهد شد.

۱۱- با تنظیم گریدل بیش از ۵ ساعت در هفته صرفه‌جویی زمانی داشته باشید.

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

اما راه‌هایی برای افزایش سرعت وجود دارد.

با دنبال کردن این دو پست (۱ و ۲) به صورت چشمگیری می‌توانید سرعت بیلد شدن کد را افزایش دهید. من خودم با به کار بستن تکنیک‌های این دو مقاله توانستم زمان بیلد را از ۴ دقیقه به ۳۰ ثانیه کاهش دهم. [در آینده شاید در این رابطه مطالب بیشتری در اسکارپ قرار دهیم].

۱۲- تست، تست و بعد از پایان کار باز هم تست!

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

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

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

۱۳- Fragmentation؛ شیطانی در لباس مبدل!

Android Fragmentation

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

هرگز به خاطر اینکه چیزی ظاهرا کار می‌کند، تصور نکنید حتما کار می‌کند.

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

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

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

بخوانید  قسمت سوم :کلید های کوتاه در اندروید استودیو

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

۱۵- کار را برای هکرها سخت کنید.

ماهیت متن‌باز اندروید آن را به محیطی آسیب‌پذیر در برابر حملات هکرها تبدیل کرده است. هر برنامه اندرویدی به سادگی می‌تواند دیکامپایل، مهندسی معکوس، کالبدشکافی، آنالیز و مدیریت شود. شما که نمی‌خواهید این اتفاق بیفتند؟ بایستی با تکنیک‌های ذخیره‌سازی امنِ API Key در داخل برنامه، روش رمزنگاری اطلاعاتِ حساس کاربران و گزینش الگوریتم‌های امن و سریع آشنا باشید. شاید لازم باشد کلید رمزنگاری را بر روی سرور ذخیره کنید. شما بایستی جلوی بکاپ گرفته شدن از داده‌های برنامه توسط ADB را بگیرید. اطلاعات حساسی که در دیتابیس ذخیره می‌کنید حتما مبهم یا obfuscate کنید.

اگر نسخه پرمیوم و پولی برنامه شما کرک شده و به صورت رایگان در فضای اینترنت منتشر شود متحمل خسارات زیادی خواهید شد. راه‌های مختلفی برای جلوگیری از دستکاری شدن کدهای برنامه وجود دارد. البته امنیت هیچگاه ۱۰۰% تامین نمی‌شود. بسته به ارزش برنامه‌، نیت هکر، با سطح بالایی از مهارت، ابزارها و منابع مناسب و مهم‌تر از همه انگیزه و پشتکار هکر، امکان کرک کردن هر برنامه‌ای وجود دارد. تنها کاری که می‌توانید بکنید سخت کردن و سنگ‌اندازی مسیر هک برنامه‌ است. [در اغلب موارد، هکر با مشاهده پیچیدگی فرایند کرک برنامه از خیر آن می‌گذرد]

پیشنهاد: مطالعه این و این می‌تواند اطلاعات خوبی برای ایمن کردن اپلیکیشن شما در اختیارتان قرار دهد.

۱۶- مبنای توسعه را دستگاه‌های رده پایین قرار دهید.

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

۱۷- برای یادگیری الگوهای طراحی سرمایه‌گذاری کنید.

Learn Design Pattern

منفعت این سرمایه‌گذاری همیشگی است. به هنگام توسعه و ساخت برنامه‌های بزرگ و پیچیده معمولا با مشکلات رایجی مواجه می‌شوید که پیش از شما توسط افراد دیگری تجربه و حل شده است. [راهکار این مشکلات در مهندسی نرم‌افزار تحت عنوان الگوهای طراحی یا Design Pattern شناخته می‌شود]. از همین امروز یادگرفتن الگوهای طراحی جاوا را آغاز کنید. پروژه‌ای در گیت‌هاب، تمامی الگوهای طراحی شناخته شده را شرح داده است. نخست از الگوهای مهم‌تر نظیر Singleton, Adapter, Factory Method, Iterator, Dependency Injection, Event Driven Architecture, Builder, Callback, Strategy, Facade و Producer Consumer شروع کنید. زیاد به نظر می‌رسند؛ نه؟ واقعا اینطور نیست. وقتی غرق در این الگوها شوید عاشق آن‌ها خواهید شد.

تکنیک پیشرفته: برای آشنایی بیشتر با الگوهای طراحی، کتاب‌هایی مثل GoF’s Design Pattern، ریفکتورینگ مارتین فولر و افکتیو جاوا از جاشوا بلوچ را حتما مطالعه کنید.

۱۸- اکنون وقت درس پس دادن است.

Copying and Pasting from Stack Overflow

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

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

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

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

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

2 دیدگاه

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




    مجید عربی

    پنج شنبه ۰۹ فروردین ۱۳۹۷

    خیلی خیلی خوب بود .
    ممنون که وقت گذاشتید و این مقاله رو ترجمه کردید (:

      محمد جواد فرکاریان

      پنج شنبه ۰۹ فروردین ۱۳۹۷

      سلام
      خواهش میکنم
      لبخند هم فراموش نکنید 😉
      موفق باشید