Forwarded from OOD Part 1
یه نگرشی توی جامعه هست به اسم program to interface که بیشتر از کتاب design patterns نشات میگیره که توی دوره و توی فصل LSP هم اون قسمت کتاب رو براتون ترجمه کردم (البته بنظر من بیشتر برداشت نادرست هست تا ...)
حتا امروز یه پست آموزشی توی لینکدین در این مورد دیدم
طبق این نگرش خیلی تمایل به جدا کردن اینترفیس از کلاس دارن
این همیشه کار درستی نیست
من یه تعبیری دارم (مال خودمه )
اینترفیس مثل روح یه کلاس هست و همیشه باهاش همراه هست (چه جداش کنی و چه نکنی )
الزامی نداره همیشه و همه جا این روح رو ازش جدا کنیم و فقط در مواقع لزوم باید این اتفاق بیوفته و جداسازی روح باید با دلیل و نیاز صریح انجام بشه .
پ.ن: رعایت DIP الزامن یه دلیل کافی و محکم برای جداسازی این روح نیست چون خود DIP شرایط و تبصره ماده داره و نباید کورکورانه همه جا فقط دنبال اینترفیس زدن برای رعایت DIP باشیم .
حتا امروز یه پست آموزشی توی لینکدین در این مورد دیدم
طبق این نگرش خیلی تمایل به جدا کردن اینترفیس از کلاس دارن
این همیشه کار درستی نیست
من یه تعبیری دارم (مال خودمه )
اینترفیس مثل روح یه کلاس هست و همیشه باهاش همراه هست (چه جداش کنی و چه نکنی )
الزامی نداره همیشه و همه جا این روح رو ازش جدا کنیم و فقط در مواقع لزوم باید این اتفاق بیوفته و جداسازی روح باید با دلیل و نیاز صریح انجام بشه .
پ.ن: رعایت DIP الزامن یه دلیل کافی و محکم برای جداسازی این روح نیست چون خود DIP شرایط و تبصره ماده داره و نباید کورکورانه همه جا فقط دنبال اینترفیس زدن برای رعایت DIP باشیم .
❌اگر مفاهیم عمیق و سخت برنامه نویسی رو صرفن با دیدن یه ویدئوی ۱ ساعته در یوتیوب میفهمید و احساس استادی بهتان دست میدهد، به خودتان شک کنید .
@purecoder_ir
@purecoder_ir
🟢یه هرم معروفی هست که میگه توی پروژه ها باید یه چیزی حدود ۷۰ درصد یونیت تست داشت و ۲۰ درصد integration test و بقیه هم e2e test (درصد ها مهم نیستن )
❌ این هرم برای هر پروژه ای قابل استفاده نیست
✅یونیت تست ها بیشتر بدرد بخش هایی از پروژه که businesses logic یا algorithm های پیچیده دارن میخورن .
✅توی پروژه ها یی که بیزینس لاجیک زیادی ندارن، معمولن این درصد ها تغییر میکنه و حتا ممکنه تعداد integration test ها برابر یا بیشتر از unit test ها بشه .
✅توی هر اپی با هر تایپی داشتن integration test لازمه، ولی unit test ها لزومی نداره که همه جا ازشون استفاده بشه.
🔥 توی یه آپ موبایل اگه بیزینس لاجیک خاصی نداشته باشه و صرفن اطلاعات رو از وب سرویس بگیره و نمایش بده، تعداد integration test ها میتونه از unit test ها پیشی بگیره.
🔥مهم نوشتن تست یا تعصب داشتن روی نوشتن یونیت تست نیست، مهمتر نوشتن تست های باکیفیت و انتخاب مناسب بین انواع تست برای هر تایپ کد و سناریو هست.
@purecoder_ir
❌ این هرم برای هر پروژه ای قابل استفاده نیست
✅یونیت تست ها بیشتر بدرد بخش هایی از پروژه که businesses logic یا algorithm های پیچیده دارن میخورن .
✅توی پروژه ها یی که بیزینس لاجیک زیادی ندارن، معمولن این درصد ها تغییر میکنه و حتا ممکنه تعداد integration test ها برابر یا بیشتر از unit test ها بشه .
✅توی هر اپی با هر تایپی داشتن integration test لازمه، ولی unit test ها لزومی نداره که همه جا ازشون استفاده بشه.
🔥 توی یه آپ موبایل اگه بیزینس لاجیک خاصی نداشته باشه و صرفن اطلاعات رو از وب سرویس بگیره و نمایش بده، تعداد integration test ها میتونه از unit test ها پیشی بگیره.
🔥مهم نوشتن تست یا تعصب داشتن روی نوشتن یونیت تست نیست، مهمتر نوشتن تست های باکیفیت و انتخاب مناسب بین انواع تست برای هر تایپ کد و سناریو هست.
@purecoder_ir
❌اگر مفهومی رو بلد هستی و نمیتونی ۱ ساعت راجبش توضیح بدی و صحبت کنی، پس بلد نیستی!!!!
صرف استفاده کردن از یه چیزی نمیشه گفت بلدم!!!!!
میتونی بری بالای منبر ؟
@purecoder_ir
صرف استفاده کردن از یه چیزی نمیشه گفت بلدم!!!!!
میتونی بری بالای منبر ؟
@purecoder_ir
Forwarded from Vania Dart Framework
YouTube
Best Dart Backend for Flutter
Best dart backend for Flutter. This is a dart server side framework
https://www.dbestech.com/tutorials/best-dart-backend-for-flutter
🎈🎈🎈Take the course here
https://www.udemy.com/course/dart-framework-api-building-course/?referralCode=CA64A5F61B002ACA1419…
https://www.dbestech.com/tutorials/best-dart-backend-for-flutter
🎈🎈🎈Take the course here
https://www.udemy.com/course/dart-framework-api-building-course/?referralCode=CA64A5F61B002ACA1419…
Forwarded from Persian Flutter (PayamZ)
سلام به همگی
همونطور که شاید مطلع باشید مجید حاجیان عزیز یه کتاب بسیار با ارزش به نام Flutter Engineering نوشته
این کتاب به زبان اینگلیسی نوشته شده اما چندنفر از بچه های کامیونیتی دارن تلاش میکنن که این کتاب رو به فارسی ترجمه کنن
شما هم اگه علاقه مندید و دوست دارید تو زمینه ترجمه کنید
میتونید تو این گروه عضو بشید و توی ترجمه کتاب مشارکت کنید
https://t.me/+333nPbRgV1Q3ZDVk
@persian_flutter
همونطور که شاید مطلع باشید مجید حاجیان عزیز یه کتاب بسیار با ارزش به نام Flutter Engineering نوشته
این کتاب به زبان اینگلیسی نوشته شده اما چندنفر از بچه های کامیونیتی دارن تلاش میکنن که این کتاب رو به فارسی ترجمه کنن
شما هم اگه علاقه مندید و دوست دارید تو زمینه ترجمه کنید
میتونید تو این گروه عضو بشید و توی ترجمه کتاب مشارکت کنید
https://t.me/+333nPbRgV1Q3ZDVk
@persian_flutter
Forwarded from Persian Flutter (Hamid)
سلام دوباره به جامعه فلاتر فارسی
فرداشب اولین کافه فلاتر سال جدید رو در آخرین روز فروردین با ما باشید. 🔥
جمعه ۳۱ فروردین ساعت ۲۰:۰۰ به وقت ایران
لینک گوگل میت:
meet.google.com/pxv-gbtu-hqz
لینک کلندر:
https://calendar.google.com/calendar/event?action=TEMPLATE&tmeid=Nzh0ZnRocGUyM3EycWhuNmVka3RzY2Nic3MgcGVyc2lhbmZsdXR0ZXJAbQ&tmsrc=persianflutter%40gmail.com
لینک یوتیوب:
https://youtube.com/live/_J0bWP5rp60?feature=share
فرداشب اولین کافه فلاتر سال جدید رو در آخرین روز فروردین با ما باشید. 🔥
جمعه ۳۱ فروردین ساعت ۲۰:۰۰ به وقت ایران
لینک گوگل میت:
meet.google.com/pxv-gbtu-hqz
لینک کلندر:
https://calendar.google.com/calendar/event?action=TEMPLATE&tmeid=Nzh0ZnRocGUyM3EycWhuNmVka3RzY2Nic3MgcGVyc2lhbmZsdXR0ZXJAbQ&tmsrc=persianflutter%40gmail.com
لینک یوتیوب:
https://youtube.com/live/_J0bWP5rp60?feature=share
Forwarded from Persian Flutter (PayamZ)
🔥Object Oriented Design
🟢دو فصل جدید به دوره ی OOD اضافه شده 😍😍
✅فصل چهارم که یه مثال خوب رو با معماری کلین جلو میبریم
✅و فصل پنجم که همین مثال رو ادامه میدیم و نکات فوق العاده ای رو به صورت عملی راجب Encapsulation میگیم تا یه فصل کامل راجب مبحث مهم Encapsulation داشته باشیم.
🔗لینک دوره:
https://purecoder.ir/course/object-oriented-design-part-one/
🔥دوره شامل پشتیبانی تلگرام هست.
✅برای شرکت در دوره به آیدی های زیر پیام بدید:
@PureCoder_Support
@MohammadTaherri
✅در آینده سعی میکنیم دو فصل دیگه به دوره اضافه کنیم.
یک فصل برای Abstraction
و یک فصل هم برای مبحث Error Handling که به طور کامل نکاتش رو پوشش میدیم (این فصل هم ادامه ی مثال فصل معماری کلین و Encapsulation خواهد بود .)
@purecoder_ir
🟢دو فصل جدید به دوره ی OOD اضافه شده 😍😍
✅فصل چهارم که یه مثال خوب رو با معماری کلین جلو میبریم
✅و فصل پنجم که همین مثال رو ادامه میدیم و نکات فوق العاده ای رو به صورت عملی راجب Encapsulation میگیم تا یه فصل کامل راجب مبحث مهم Encapsulation داشته باشیم.
🔗لینک دوره:
https://purecoder.ir/course/object-oriented-design-part-one/
🔥دوره شامل پشتیبانی تلگرام هست.
✅برای شرکت در دوره به آیدی های زیر پیام بدید:
@PureCoder_Support
@MohammadTaherri
✅در آینده سعی میکنیم دو فصل دیگه به دوره اضافه کنیم.
یک فصل برای Abstraction
و یک فصل هم برای مبحث Error Handling که به طور کامل نکاتش رو پوشش میدیم (این فصل هم ادامه ی مثال فصل معماری کلین و Encapsulation خواهد بود .)
@purecoder_ir
لطفن جواب بدید 🙏🙏🙏
برنامه نویسی چندمین حرفه ای بود که امتحانش کردین ؟
از کجا مطمئن هستید که داخلش استعداد دارید ؟
از کجا معلوم که رسالت شما جای دیگه ای نباشه؟
برنامه نویسی چندمین حرفه ای بود که امتحانش کردین ؟
از کجا مطمئن هستید که داخلش استعداد دارید ؟
از کجا معلوم که رسالت شما جای دیگه ای نباشه؟
Forwarded from Persian Flutter (Parham Oyan)
ویدیو جدید داریم تو کانال یوتیوب!
لایک، کامنت و ساب یادتون نره!
https://www.youtube.com/watch?v=8Dnm_Ucu1PU
@persian_flutter
لایک، کامنت و ساب یادتون نره!
https://www.youtube.com/watch?v=8Dnm_Ucu1PU
@persian_flutter
YouTube
آیکنهای متناسب با DPI
تو این ویدئو به این میپردازیم که تو فلاتر چطور آیکنی با فرمت png رو توی صفحه نمایشهایی با تراکم پیکسلی متفاوت، با کیفیت مطلوب، نمایش بدیم.
عضو کانال ما هم بشید
Telegram: https://t.me/persian_flutter
عضو کانال ما هم بشید
Telegram: https://t.me/persian_flutter
Forwarded from [ بیشُعوری ] (ปïℓï)
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Persian Flutter (Hamid)
سلام. دوباره اومدیم با یه کافه فلاتر خفن دیگه امشب ۲۸ اردیبهشت ساعت ۲۰ به وقت ایران 🔥
طبق روال آخرین جمعههای ماه که با هم هستیم، امشب هم تو کافه فلاتر دو تا ارائه جذاب داریم:
۱- پیام زاهدی در مورد Flutter Embedded صحبت میکنه. پیام در آلمان تو همین حوزه فعالیت میکنه.
۲- امیرمحمد جابری در مورد موضوع پرکاربرد CI/CD in Flutter ارائه میده.
بعد ارائهها هم حتماً پیشمون بمونید که میخوایم در مورد آپدیت جدید فلاتر و فیچرهاش تو قسمت بحث آزاد صحبت کنیم. 😍
کافه فلاتر در گوگلمیت برگزار میشه:
https://meet.google.com/bxb-acjt-iaq?authuser=0
همچنین میتونید کافه فلاتر رو به صورت لایو از چنل یوتیوب جامعه فلاتر فارسی مشاهده کنید.
https://www.youtube.com/watch?v=Yz4iP5iSdFg
طبق روال آخرین جمعههای ماه که با هم هستیم، امشب هم تو کافه فلاتر دو تا ارائه جذاب داریم:
۱- پیام زاهدی در مورد Flutter Embedded صحبت میکنه. پیام در آلمان تو همین حوزه فعالیت میکنه.
۲- امیرمحمد جابری در مورد موضوع پرکاربرد CI/CD in Flutter ارائه میده.
بعد ارائهها هم حتماً پیشمون بمونید که میخوایم در مورد آپدیت جدید فلاتر و فیچرهاش تو قسمت بحث آزاد صحبت کنیم. 😍
کافه فلاتر در گوگلمیت برگزار میشه:
https://meet.google.com/bxb-acjt-iaq?authuser=0
همچنین میتونید کافه فلاتر رو به صورت لایو از چنل یوتیوب جامعه فلاتر فارسی مشاهده کنید.
https://www.youtube.com/watch?v=Yz4iP5iSdFg
Forwarded from Persian Flutter (Hamid)
سلام. دوباره داریم به آخرین جمعه ماه نزدیک میشیم و کافه فلاتر هم داره میرسه. این ماه قرارمون ۲۵ خرداده. 😅
جمعه ۲۵ خرداد ساعت ۸ شب به وقت ایران
طبق روال آخرین جمعههای ماه که با هم هستیم، این ماه هم دو تا ارائه داریم:
- سبحان مرادی در مورد End2End Testing با Patrol صحبت میکنه.
- حسین حاجیان هم در مورد Supabase ارائه میده.
بعد ارائهها هم بحث آزاد داریم. 👊
کافه فلاتر در گوگلمیت برگزار میشه:
https://meet.google.com/mok-qqdr-uwa
همچنین میتونید کافه فلاتر رو به صورت لایو از چنل یوتیوب جامعه فلاتر فارسی مشاهده کنید:
https://www.youtube.com/watch?v=1KJ5izo0pCg
لینک گوگل کلندر:
https://calendar.google.com/calendar/event?action=TEMPLATE&tmeid=MHNpbDQ0MGpwNGk4ZHMwMjRnbDRsNTRzcTYgcGVyc2lhbmZsdXR0ZXJAbQ&tmsrc=persianflutter%40gmail.com
جمعه ۲۵ خرداد ساعت ۸ شب به وقت ایران
طبق روال آخرین جمعههای ماه که با هم هستیم، این ماه هم دو تا ارائه داریم:
- سبحان مرادی در مورد End2End Testing با Patrol صحبت میکنه.
- حسین حاجیان هم در مورد Supabase ارائه میده.
بعد ارائهها هم بحث آزاد داریم. 👊
کافه فلاتر در گوگلمیت برگزار میشه:
https://meet.google.com/mok-qqdr-uwa
همچنین میتونید کافه فلاتر رو به صورت لایو از چنل یوتیوب جامعه فلاتر فارسی مشاهده کنید:
https://www.youtube.com/watch?v=1KJ5izo0pCg
لینک گوگل کلندر:
https://calendar.google.com/calendar/event?action=TEMPLATE&tmeid=MHNpbDQ0MGpwNGk4ZHMwMjRnbDRsNTRzcTYgcGVyc2lhbmZsdXR0ZXJAbQ&tmsrc=persianflutter%40gmail.com
🔥recursive function
❓توی فلاتر کجاها از الگوریتم بازگشتی استفاده شده ؟
✅خیلی جاها 😱
🔥برای مثال وقتی یه ویجت (Render Object) میخواد سایز خودش رو تعیین کنه اول به child اش میگه که سایزت رو مشخص کن و به من بگو و child اش هم همین رو به child اش میگه و این روند تا پایین درخت ادامه پیدا میکنه تا جایی که آخرین child اون شاخه (leaf)خودش رو سایز دهی کنه و به parent اش اعلام کنه و این روند به سمت بالای درخت ادامه پیدا میکنه تا همه ی parent ها یکی یکی خودشون رو سایز دهی کنن.
@purecoder_ir
❓توی فلاتر کجاها از الگوریتم بازگشتی استفاده شده ؟
✅خیلی جاها 😱
🔥برای مثال وقتی یه ویجت (Render Object) میخواد سایز خودش رو تعیین کنه اول به child اش میگه که سایزت رو مشخص کن و به من بگو و child اش هم همین رو به child اش میگه و این روند تا پایین درخت ادامه پیدا میکنه تا جایی که آخرین child اون شاخه (leaf)خودش رو سایز دهی کنه و به parent اش اعلام کنه و این روند به سمت بالای درخت ادامه پیدا میکنه تا همه ی parent ها یکی یکی خودشون رو سایز دهی کنن.
@purecoder_ir
کدوم یک از دیتا استراکچر های زیر شبیه الگوریتم بازگشتی عمل میکنه ؟
Anonymous Quiz
10%
Queue
35%
Linked List
41%
Stack
13%
Hash Map
یکی از دلایلی که توی جاوا و بعدش به پیروی از جاوا توی سی شارپ اینترفیس رو ابداع کردن، درحالیکه با استقاده از abstract class ها میشد همون کارو انجام داد این بود که طراحان جاوا تصمیم گرفتن ارث بری چند گانه که توی c++ وجود داشت رو توی جاوا بترکونن و به همین دلیل اینترفیس ها رو ابداع کردن تا یک کلاس بتونه چندتا اینترفیس رو impl کنه .
پ.ن: توی c++ یه کلاس میتونست از چند تا کلاس دیکه ارث بری کنه و توی جاوا این امکان نیست .
پ.ن: طراحان جاوا چون میخواستن کلن deadly diamond problem رو بپیچونن و خودشون رو درگیرش نکنن (مشکلی که در اثر multiple inheritance ایجاد میشه)، کلن از ریشه داستان رو بیخیال شدن.
@purecoder_ir
پ.ن: توی c++ یه کلاس میتونست از چند تا کلاس دیکه ارث بری کنه و توی جاوا این امکان نیست .
پ.ن: طراحان جاوا چون میخواستن کلن deadly diamond problem رو بپیچونن و خودشون رو درگیرش نکنن (مشکلی که در اثر multiple inheritance ایجاد میشه)، کلن از ریشه داستان رو بیخیال شدن.
@purecoder_ir
🔥widget Tree_Element Tree_Render Tree
✅توی فلاتر به ازای هر ویجت توی widget Tree یک Elememt توی Element Tree ایجاد میشه .
✅متناظر با ویجت های مختلف Element های مختلف هم وجود دارند
برای مثال
InheritedElement
...
✅ولی به ازای هر ویجت یک Render Object توی Render Tree ایجاد نمیشه و فقط ویجت هایی که از نوع RenderObjectWidget هستن یه RenderObject توی Render Tree ایجاد میکنن .
برای مثال StatelessWidget هیچ نماینده ای توی Render Tree نداره.
دلیلش اینه که فقط RenderObjectWidget ها جنبه ی بصری دارن و بقیه ویجت ها هیچ جنبه ی بصری ندارن .
✅ویجت هایی مثل Padding, Stack, Row, ...از نوع RenderObjectWidet هستن .
@purecoder_ir
✅توی فلاتر به ازای هر ویجت توی widget Tree یک Elememt توی Element Tree ایجاد میشه .
✅متناظر با ویجت های مختلف Element های مختلف هم وجود دارند
برای مثال
InheritedElement
...
✅ولی به ازای هر ویجت یک Render Object توی Render Tree ایجاد نمیشه و فقط ویجت هایی که از نوع RenderObjectWidget هستن یه RenderObject توی Render Tree ایجاد میکنن .
برای مثال StatelessWidget هیچ نماینده ای توی Render Tree نداره.
دلیلش اینه که فقط RenderObjectWidget ها جنبه ی بصری دارن و بقیه ویجت ها هیچ جنبه ی بصری ندارن .
✅ویجت هایی مثل Padding, Stack, Row, ...از نوع RenderObjectWidet هستن .
@purecoder_ir