Pure Coder
786 subscribers
189 photos
30 videos
8 files
150 links
⭕️آدرس سایت:
https://purecoder.ir

⭕️گروه پرسش و پاسخ:
@purecoder_gp

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
🟢<type>(<scope>): <subject>

✔️type : required
✔️scope : optional
✔️subject: required

scope

🔥این پارامتر اختیاری هست

🔥کاملا قراردادی هست و بستگی داره به پروژه ای که انجام میدین و توی پروژه باید مشخص کنید که این پارامتر چه مواردی رو میتونه در بر بگیره .

پس دنبال موارد از پیش تعیین شده نباشید

🔰برای نمونه توی یه پروژه ای که لایه های مختلف مثل presentation, data, logic داره .
این ها میتونن به عنوان scope در نظر گرفته بشن

🔰یا پروژه ای که سرویس های مختلف داره...

🔰ریپوزیتوری bloc روی گیت هاب که خودش از پروژه های مختلف مثل bloc, fluttet_bloc, ... تشکیل شده، هر پروژه رو به عنوان یه scope در نظر گرفته.

پس کاملا قراردادیه.

مثل مورد قبلی یعنی type, ابتدای پروژه باید یه لیستی رو مشخص کنید و قرارداد کنید و از اون پیروی کنید ( البته در طول پروژه میتونه بروزرسانی بشه)

#advanced
#capsule
🟢<type>(<scope>): <subject>

✔️type : required
✔️scope : optional
✔️subject: required

subject

🔥برای این مورد از یک جمله کوتاه برای شرح دادن commit مورد نظر استفاده کنید.

جمله باید :

✔️زمان حال ساده باشه.
✔️امری باشه.
✔️با حروف کوچک شروع بشه.
✔️تهش نقطه نباشه

update the folan thing
Update the folan thing
update the folan thing.
updated the folan thing
the folan thing is updated
the folan thing was updated
the folan thing has been updated

#capsule
#advanced
This media is not supported in your browser
VIEW IN TELEGRAM
برنامه‌نویسی در فیلم‌ها vs برنامه‌نویسی در دنیای واقعی :)

🔻Ayub

@BahseAzad 🪴
🔥Challenge

چالش :

▶️سناریو :

فرض کنید که میخواین توی تیم نقشه نشان استخدام بشید و کار اصلی که از شما میخوان این هست که یه SDK برای فلاتر بنویسید

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

در نهایت باید همه قابلیت های نیتیو اعم از کار کردن با نقشه و مارکر زدن توی نقشه و این ور اون ور کردن نقشه و... رو توی فلاتر هم داشته باشیم

خب پیشنهاد هاتون رو بگید که چکار میکنید و از چه روشی استفاده میکنید


#challenge
برای اپ های فلاتریتون چه معماری استفاده میکنید؟

چطوری یادش گرفتید؟
بنظرتون تا چه حد بهش مسلط هستید؟
چطوری دانشتون رو در موردش ارتقا میدید؟
Pure Coder pinned Deleted message
چقدر با دیزاین پترن ها آشنایی دارین؟

کدوم ها رو بلدین؟
کدوم ها رو صرفا سینتکسش رو بلدین؟
کدوم ها رو به صورت کاربردی ازش استفاده میکنین؟

به غیر از سینگلتون 😅😝
🔥Challenge

چالش:

تفاوت extends و implement رو بگید یا با هم مقایسشون کنید.

#challenge
💊Capsule
🔥extends vs implement
1⃣

🟢واژه extend به معنای گسترش دادن یا توسعه دادن هست

B extends A

یعنی اینکه B داره A رو توسعه میده (گسترش میده)

🟢واژه implement به معنای پیاده سازی یا اجرا کردن هست

B implement A

یعنی B داره A رو پیاده سازی میکنه.

#capsule
💊Capsule
🔥extends vs implement
2⃣

گفتم که extend به معنای توسعه دادن هست .
پس وقتی که کلاس B داره کلاس A رو توسعه میده (extends) , طبیعتا طبق معنای توسعه دادن، باید تمام ویژگی ها و رفتار های کلاس A رو داشته باشه و بتونه اون رفتار ها رو تغییر بده و یا ویژگی ها و رفتار های جدید بهش اضافه کنه.

هر کلاس دو تا مولفه داره
✔️Fields ویژگی
✔️Methods رفتار

این ها میتونن static یا instance باشن
✔️instance Fields or methods
✔️Static Fields or methods

در این جا با static ها کاری نداریم (چون در سطح کلاس هستن و نه در سطح اشیا ساخته شده از کلاس)

🔥وقتی یک کلاس از یک کلاس دیگه extends میکنه:

🟢همه instance Field ها و instance method های اون رو به ارث میبره .
به غیر از اعضای private
توی دارت private نداریم.

🟢میتونه اون ها رو تغییر یا به اصطلاح override کنه.

🟢یا میتونه field ها یا method های جدید رو به اون اضافه کنه.

🔥در اینجا اصطلاح super class و sub class معرفی میشه

B extends A
در نتیجه کلاس A در اینجا super class و کلاس B یک subclass از کلاس A هست

کلاس فرزند تمام رفتار ها و ویژگی های والد رو به ارث میبره.
میتونه اون ها رو به صورت دست نخورده باقی بگذاره یا اون ها رو تغییر بده.
همچنین میتونه رفتار ها و ویژگی های جدید اضافه کنه.

#capsule
💊Capsule
🔥extends vs implement
3⃣

خب بریم سراغ implement
گفتیم که این واژه به معنای پیاده سازی هست

یک لحظه از دنیای برنامه نویسی بیاین بیرون

توی دنیای واقعی

من به شما میگم، اقا خانم، فلان چیز رو پیاده سازی کن.

وقتی بهت میگم فلان چیز رو پیاده سازی کن شما منتظر چی هست؟ در جواب چی میگی؟

میگی چی رو؟
درسته؟

منتظر یه دستور هستی
منتظر یک یا چند دستور
دستور العمل

دستور هایی که یک نفر صادر کرده و دیگری میخواد پیاده کنه یا اجرا کنه.

🔥پس وقتی که میگیم B میخاد A رو implement کنه، در واقع A باید یک مجموعه ای از دستور العمل ها باشه.

در اینجا دیگه A چیزی پیاده نکرده، چون که A قراره که دستور رو صادر کنه و یکی دیگه اون ها رو پیاده یا اجرا کنه.

پس باید بفهمیم که چطور میتونیم یک مجموعه از دستور ها رو بنویسیم که دیگران اون ها رو اجرا کنن.

پست بعدی 😍
#capsule
💊Capsule
🔥extends vs implement
4⃣

رسیدیم به اینجا که یک مجموعه از دستور ها رو یه جایی بنویسم و بقیه کلاس ها بتونن اون ها implement کنن.

🔥برای این منظور توی زبان های برنامه نویسی از مفهومی به نام interface ها استفاده میکنن.

توی یک interface ما فقط یک سری متد تعریف میکنیم و این متد ها هیچ بدنه و یا body ندارند.

در واقع فقط داریم یک دستور رو صادر میکنیم.

کلاس های دیگه که interface مورد نظر رو implement میکنن، باید تمام متد هایی که داخل اون interface تعریف شده رو پیاده سازی کنن.

🔥در واقع توی interface ما فقط امضای متد یا Signature اون رو مشخص میکنیم.

interface Contract{
void doSomething() ;
}

Class Concrete implement Contract {

void doSomething () {
// do your work...
}
}


#capsule
💊Capsule
🔥extends vs implement
5⃣

توی دارت چیزی به نام interface نداریم.

🔥برای این منظور از abstract کلاس ها استفاده میکنیم.

abstract class Contract{
void doSomething() ;
}

Class Concrete implement Contract {

void doSomething () {
// do your work...
}
}


کلاس های abstract هم میتونن متد های معمولی داشته باشن (همراه با بدنه /مثل بقیه کلاس ها) و هم متد های بدون بدنه.

هم میتونیم یک abstract کلاس رو implement کنیم و هم میتونیم ازش extends کنیم.

ولی تفاوتش چیه؟ 🤔

🔥اگه extends کنیم، این کلاس مثل یک super class برای ما عمل میکنه و تمام ویژگی های اون رو به ارث میبریم و علاوه بر اون باید متد های بدون بدنه اون رو پیاده سازی کنیم.

🔥اگه اون رو implement کنیم، کلا دیگه موضوع به ارث بردن ویژگی های اون میره پی کارش و ما مجبور میشیم که تمام متد های اون رو (چه با بدنه و چه بدون بدنه) پیاده سازی کنیم.

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

ولی این مورد استفاده توصیه نمیشه.

اگه abstract کلاسمون همه متد هاش بدون بدنه بودن و شبیه به interface بود اون رو implement میکنیم.

و اگه هر دو نوع رو در خودش داشت ازش extends میکینم که بتونیم تمام ویژگی هاش رو به ارث ببریم و متد های بدون بدنش رو هم implement یا پیاده سازی کنیم.
#capsule
💊Capsule
🔥extends vs implement
6⃣

🔥اگه بخوایم یک abstract کلاس قابل ارث بری نباشه و کلاس های دیگه نتونن ازش extends کنن و فقط مجبور باشن که implement اش کنن و در واقع شکل interface به خودش بگیره از تکنیک زیر استفاده می کنیم.

abstract class MyInterface{

const MyInterface._() ;

}


البته کلاس هایی که توی یک فایل یا library هستن میتونن این دست انداز رو رد کنن و بازم extends کنن😝
#capsule
PYsvgTz.png
2 MB
🔥Design Patterns🔥

#capsule
💊Capsule
نام گذاری

برای نام گذاری متغیر ها , فانکشن ها , کلاس ها و ... توی زبان های برنامه نویسی از 4 الگوی مختلف استفاده میشه:

✔️snake_case
✔️camelCase
✔️PascalCase
✔️kebap-case

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

🔥توی دارت :

برای نام گذاری فایل ها از snake_case استفاده میکنیم.

home_page.dart

برای نام گذاری متغیر های و فانکشن ها از camelCase استفاده میکنیم.

var newUser;

User createUser(){}

برای نام گذاری کلاس ها از PascalCase استفاده میکنیم.

class HomePage{}

#capsule
🔥زبان جدید گوگل

https://www.instagram.com/tv/CgzAvoRFjWs/?igshid=YmMyMTA2M2Y=

توی پست بالا، جادی در مورد زبان جدید گوگل صحبت میکنه

-کربن- زبان جدید و خیلی جدید گوگله که هنوز ابتدای راهه و دارن روش کار میکنن.

یک زبانی هست که میتونه با c++ مخلوط بشه و بخاطر جدید تر بودنش کار با c++ رو راحتر کنه.

پ.ن: این زبان رو من کار نکردم و فقط حرفهای جادی رو کپی و پیست کردم.
🔥Challenge

ابسترکشن (abstraction) رو توضیح بدید.


کلاس abstract و interface و از این جور داستان ها مد نظر نیست.

مفهومش توی دنیای واقعی چیه (دنیای واقعی، خارج از برنامه نویسی)

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

و بعد از تحلیلتون به این سوال پاسخ بدید

آیا abstraction فقط فقط مخصوص OOP یا برنامه نویسی شی گرا هست؟ یا بقیه پارادایم های برنامه نویسی هم دارن از این مفهوم استفاده میکنن؟ چرا و چگونه؟

#challenge
#advanced
میگن یوتیوب مثل دانشگاس

ولی یه جمله دیگه هم هست که میگه دانشگاه به درد نمیخوره و چیزی ازش در نمیاد

خلاصه حواستون باشه 😅😅
🔥Challenge

1⃣یه کلاس یوزر داریم که یه فیلد ایمیل داره و یه instance field داخل کلاس از نوع bool داریم که نشون میده ایمیل ولید هست یا نه...

چه اسمی برای این فیلد انتخاب میکنی؟

isValid
emailIsValid
isEmailValid
isValidEmail
hasValidEmail
🤔other...

2⃣یه فانکشن تک و تنها (خارج از هر کلاسی داریم) که قراره یه استرینگ به عنوان ورودی بگیره و یه bool برگردونه که مشخص میکنه این استرینگ یک ادرس ایمیل معتبر هست یا نه...

چه اسمی برای این فانکشن انتخاب میکنی؟

isValid
validate
validateEmail
emailIsValid
isEmailValid
isValidEmail
hasValidEmail
🤔other...

🔥هر گزینه ای انتخاب کردی با ذکر دلیل..
🔥میتونی بین گزینه ها مقایسه انجام بدی و بگی این چرا بده و اون چرا بهتره و... (این مدل پاسخ خیلی خوبه 😍)
🔥میتونی چند گزینه انتخاب کنی یا گزینه دیگه ای پیشنهاد بدی (با ذکر دلیل و تحلیل)


#challenge
کدوم یک از دیزاین پترن های زیر نقش اساسی تر از بقیه رو در فلاتر ایفا میکنه؟
Anonymous Quiz
18%
Template method
40%
Observer
18%
Composite
6%
Visitor
18%
Decorator