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

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

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
Pure Coder pinned a photo
Forwarded from Fluttery's Journey
خودمون RenderObject ساختیم😍😍
بدون استفاده از کلاس RenderObject فلاتر

از بیس و اختصاصی برای توضیح مفاهیم...

بدون استفاده از ویجت ها و امکانات فریمورک و فقط با api های Dart Ui یه UI و Animation ساده ساختیم.
Pure Coder pinned a photo
🔥Event Loop

https://purecoder.ir/fluttry-journy-dart-event-loop/

از سری دروس رایگان دوره ی فلاترمون event Loop در دارت هست که از لینک بالا میتونی دنبالش کنی 😍

حتمن بخونش تا با نحوه ی هندل شدن async Task ها و event queue و microtask ها توی دارت اشنا بشی

پشتیبانی:
@purecoder_support

@purecoder_ir
پیام یکی از دوستانی که توی دوره ی فلاتر شرکت کرده بود

مربوط به قسمتی هست که توی فصل ۱ یه مثال از متد بازگشتی رو با روش TDD حل کردیم و روحش ارضا شد 😂😂😝😝

حتا توی دوره بک گراند فلاتر هم ولتون نمیکنم و شده یه گریز کوچیکی به تست میزنم 😝😝

@purecoder_ir
درست کردن n تا فولدر تو در تو به معنی یه معماری خوب نیست

نکنید آقا نکنید 🤦‍♂🤦‍♂🤦‍♂

@purecoder_ir
من کامیت های گیت رو معمولن اینجوری متمایز میکنم:

feature

اینا کامیت هایی هستن که معمولن مقدار زیادی کد از لایه های مختلف رو شامل میشن (تست + پروداکشن کد) و همراه با اون یه feature جدید به نرم افزار اضافه میشه.

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

🔥برای تست ها کامیت جدا نمیزنم و همه رو باهم کامیت میکنم (تست + پروداکشن کد)

‌Behavior
اینا مربوط به تغییراتی هستن که observable behavior سیستم رو برای end user تغییر میده, ولی نمیشه اونا رو یه feature به حساب اورد.

برای مثال وقتی که رسپانسی که یه api برمیگردونه رو تغییر میدم.

Refactor

وقتی که استراکچر کد (پروادکشن کد یا تست) رو تغییر میدم بدون اینکه observable behavior اش تغییر کنه.

اینا معمولن شامل مقدار کمی تغییرات میشن.

style

وقتی کد رو فرمت میکنم, مثل پاک کردن فضاهای خالی و ... .

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

Chore

یه پکیجی، دپندنسی، چیزی اضافه کردم
معمولن کوچولوترین کامیت ها هستن.


@purecoder_ir
بهترین زبان برنامه نویسی برای یادگیری مباحث جامع و مشترک مثل دیزاین پترن ها, معماری, تست نویسی و ... زبان جاوا هست و لاغیر.

بدترین زبان هم جاوا اسکریپته. خدا لعنت کنه سازندش رو.
Pure Coder
هاه.. اومدم یه سوال ساده الگوریتمی در حوزه ارایه‌ها حل کنم ولی راستش رو بخواین اگر خودم با خودم مصاحبه می‌کردم، نمره قبولی نمی ‌دادم ((: https://youtu.be/Xne03-Owc84
جادی شروع کرده توی یوتیوبش مسائل الگوریتمی حل میکنه و هر چند وقت یه بار یه قسمت جدید میذاره

حتمن دنبال کنید

خودم فرصت و حوصله کنم حتمن پیگیری میکنم ...
🔥implicit cast

یکی از امکاناتی که توی سی شارپ هست و خیلی جاها کاربردیه و اگه دارت هم چنین چیزی اضافه کنه خیلی خوب میشه implicit cast هست:

public static implicit operator Result<T, E>(T value)
{
return Result.Success<T, E>(value);
}

public static implicit operator Result<T, E>(E error)
{
return Result.Failure<T, E>(error);
}

// Usage
public static Result<Money, Error> Create(long amount)
{
if (amount < 0)
return new MoneyAmountIsNegative();

return new Money(amount);
}
Forwarded from OOD Part 1
سوال

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

interface class Usecaee<TInput, TResult>{
Future<TResult> execute(TInput input);
}

بعد هر کلاسی این رو impl می‌کرد تایپ. Tinput رو مشخص می‌کرد.

فرض کن بجای این اینترفیس این مدلی عمل کینم:

interface class Usecaee< TResult>{
Future<TResult> execute(object input);
}

ینی برای input جنریک در نظر نگیریم و اونو از جنس object بگیریم

حالا کلاسی که پیاده سازیش میکنه اینجوری عمل میکنه

class AddNewProductCategory implements Usecase<void> {

Futue<void> execute(object input) {
var params = input as AddNewCategoryParams;


}
}

ینی وروی جنس ابجکت رو به جنس دلخواه خودش cast میکنه تا بتونه باهاش کار کنه..

اینجا کدوم اصل سالید نقض شده ؟

😁به نام گذاری ها و ...گیر ندید..کد رو توی تلکرام نوشتم
فقط سوال رو جواب بدید😁
مهمترین اصلی که هر برنامه نویسی باید همه جا جلوی چشمش باشه YAGNI هست

You Aren't gonna need it.

خیلی خیلی میبینیم که طرف به بهونه رعایت DIP (اص 5 سالید) توی پروژش برای هر کلاسی یه اینترفیس هم میزنه:

One interace
One implementation

یه دونه اینترفیس و فقط یه دونه implementation.

مثلن
ProductRepositpryInterface
ProductRepositpryimpl

ProductDatasourceInterface
ProductDatasourceImpl

😱😱😱😱😱😱😱

یا مثلن میبینیم که یه Repository میخواد بنویسه و مثلن چندین متد داخلش بگذاره:
getById
getAll
getWhere
save
...

و برای هر کدوم این متد ها یه اینترفیس جدا میزنه و میگه میخوام ISP (اصل 4 سالید) رو رعایت کنم!!

خب با رعایت کردنش میخوای چه چیزی رو بدست بیاری؟😅

این اصول رو که برای قشنگی ابداع نکردن که مثل نقل و نبات بریزیم توی کدمون😅

باید نیاز بشه تا استفاده کنیم و هر کدوم جایگاه خودشون رو دارن و استفاده ی بی مورد بدتر complexity پروژه رو بیشتر میکنه.


نکنید آقا نکنید 😅😅

@purecoder_ir
Forwarded from Fluttery's Journey
ویجت تری و المنت تری و رندر تری نمادینی که توی فصل 4 دوره میسازیم و از راس درخت تا پایین دونه دونه المنت ها رو میسازیم و پایین میایم و لایف سایکلشون رو بررسی میکنیم.

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

@Fluttery_journey