نکات جالب AMA تیم توسعهدهندهی Dagger2
چند وقت پیش یه AMA (فکرکنم معادل فارسیش میشه “از هرچیزی بپرس”) توی reddit بود که تیم توسعهدهندهی دگر سوالاتی که ازشون پرسیده شده رو جواب دادن. دیشب وقت کردم بخونمش و نکاتی که بنظرم جالب رو بود رو در ادامه نوشتم. البته اگر میخواید خودتون همهی سوال و جوابهارو بخونید، میتونید به لینک زیر برید.
ضعف داکیومنت
یه سری از دولوپرها در مورد اینکه داکیومنت خوب نیست، تذکر داده بودند. چند نفر گیر داده بودن به لغت Thermosiphon که توی مثال استفاده شده :)) توشون یه انگلیسی زبان بود که نوشته بود با اینکه انگلیسی زبانم ولی این لغت رو تا حالا نشنیده بودم!
یکی از اعضای اصلی تیم توسعهدهنده جواب داده بود که قبول دارند باید داکیومنت رو بهتر کنند. البته گفته بود پیدا کردن مثال برای توضیح دگر سخته، دلیلشم اینه اگر مثال خیلی ساده باشه، مزایای دگر رو نشون نمیده و اگر خیلی پیچیده باشه، یادگرفتنش سخت میشه. یه بخش جدید هم به اسم semantics به داکیومنت اضافه کردند و داخلش توضیح دادند دگر از چیا درست شده و واژههایی که توی دگر استفاده شده معنیشون چیه.
https://google.github.io/dagger/semantics
انتشار نسخه ۳
یکی پرسیده بود که نسخه ۳ دگر چه موقع منتشر میشه که گفته بودند تصمیمی برای این قضیه ندارند و فعلا روی همین نسخهی ۲ کار میکنند.
دیداریسازی (Visualization)
دو نفر در رابطه با Visualization توی دگر پرسیده بودند. مزیت Visualization اینه میشه object graphیی که دگر ساخته رو مثل یه گراف واقعی دید و بررسی کردش.
یکی از اعضای تیم توسعه دهنده خبر از انتشار SPI رو داده بود که هدفش همین کار هست. انگار object graph رو تبدیل میکنه به فایلهایی با فرمت dot و میشه این فایل رو از طریق graphviz دید. البته SPI کاملا آزمایشی منتشر شده، مثال هم براش گذاشتند ولی حقیقتش من اصلا نفهمیدم چطوری میشه ازش استفاده کرد. لینک مثال
دگر و custom views
یکی پرسیده بود که چطوری میشه از دگر توی custom viewها استفاده کرد که باز یکی از اعضای تیم توسعه دهنده گفته بود که کلا توصیه میکنیم اینکارو نکنید. dependencyهارو باید یه سطح بالاتر از view توی fragment یا Conductor یا هر کنترلر دیگهای که دارید inject کنید.
دگر و kotlin
یکی پرسیده بود توی kotlin چطوری از دگر استفاده کنیم بهتره؟ یکی از اعضای تیم توسعه دهنده این لینک رو که منم قبلا توی بلاگ گذاشتمش رو معرفی کرد. توی این issue در مورد best practiceهای استفاده از دگر توی kotlin صحبت میکنند.
https://github.com/google/dagger/issues/900
ویدیو آموزشی دگر
یکی سوال پرسیده بود برای کسی که با دگر اصلا آشنا نیس، چه آموزشی رو پیشنهاد میکنید؟ یکی از اعضای تیم این لینک رو معرفی کرده بود
Understanding Dagger 2’s Generated Code
چندتا کاربر دیگه هم اینا لینکهارو توصیه کرده بودن
Dependency Injection Made Simple
The Future of Dependency Injection with Dagger 2
TwistedEquations – Dagger 2 Android Tutorial
ماژول اندروید dagger
یکی پرسیده بود دلیل اینکه dagger.android رو منتشر کردید چیه و بعد چند پیام با یکی از اعضای تیم توسعهدهنده صحبت کرده. چون طولانیه، اینجا نمیذارمش و مستقیم برید توی reddit بخونیدش.
یه جای دیگه هم یکی گفته بود حتما بجای روش قدیمی getNetComponent().inject(this توی اندروید با از dagger.android و AndroidInjection.inject(this استفاده کنیم؟ یکی از اعضای تیم توسعهدهنده گفته بود که میتونید از هرکدوم که میخواید استفاده کنید ولی تیم ما dagger.android رو توصیه میکنه! بعد گفته بود دلیل توصیهمون هم مشخصه، چون خودمون درستش کردیم :))