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

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

⭕️پشتیبانی:
@PureCoder_support
@MohammadTaherri
Download Telegram
بهترین زبان برنامه نویسی برای یادگیری مباحث جامع و مشترک مثل دیزاین پترن ها, معماری, تست نویسی و ... زبان جاوا هست و لاغیر.

بدترین زبان هم جاوا اسکریپته. خدا لعنت کنه سازندش رو.
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
Pure Coder pinned a photo
۲۰ و چند سال پیش که هنوز جاوا و سی شارپ Generic Type نداشتن، چقد برنامه نویس ها بدبخت بودن 😂😂😂
Forwarded from Fluttery's Journey
یه issue ای که قبلن توی فلاتر باز کرده بودم مربوط به این بود که MultiChildRenderObjectWidget ها const constructor نداشتن و خیلی سرسختی میکردن که اینو برطرفش کنن ولی خب دیگه برطرفش کردن:

https://github.com/flutter/flutter/issues/95179

برطرف کردنش خیلی راحت بود ولی موضوع این بود که خیلی از پروژه ها break میشد.

@Fluttery_journey
Forwarded from Fluttery's Journey
یه issue دیگه مربوط به Column و row هست که 3 سالع اینو باز کردم و هنوز close نشده

مشکل مربوط به render object اشون هست و خودم میتونم درستش کنم و pull request بزنم ولی حوصلشو ندارم😂😂

https://github.com/flutter/flutter/issues/95398

@Fluttery_journey
🔥چالش

اگه یه معماری سه لایه ای داشته باشیم
Domain
Data souce
Presentation

فرض کنید محصولات رو با قیمت دلاری شون توی دیتابیس ثبت کردید ولی موقع نمایش به کاربر باید اونو به واحد پولی کشور محل زندگی کاربر تبدیل کنید

حالا توی یه یوزکیس می‌خوایم لیستی از پروداکت ها رو از دیتابیس بگیریم و به کاربر نشون بدیم

فرایند تبدیل currency از USD (که توی دیتابیس ثبت شده) به currency مورد نظر جزو کدوم یک از لاجیک های زیر بحساب میاد ؟

Domain logic
Data source logic
presentation logic

@purecoder_ir
🔥چالش

اگه بخوایم قبل از همه ی سرویس هایی که توی اپمون اجرا میشن, Network connectivity رو چک کنیم و در صورت نداشتن connection یه کار خاص انجام بدیم و درصورت برقرار بودنش هم سرویس مورد نظر به کارش ادامه بده...

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

Domain logic
Data source logic
presentation logic

@purecoder_ir
اگه دعوا نمی‌کنید ( مهم هم نیست البته برام 😂) آپ های موبایل که بیزینس چندانی ندارن و همه چیزشون سمت سرور هندل میشه میتونن کلن کلاس هایی با اسم Entity و model رو هیچ کدوم رو نداشته باشن و فقط یه view model داشته باشن و تمام ...و view model هم اختصاص داره به UI و اصلن شبیه جیسونی که از API میاد نیست

@purecoder_ir
خب بعد از وقفه حدودا یک ماهه میخوایم دوباره سه شنبه هفته آینده دورهمی برگذار کنیم

موضوعش هم خیلی جالبه درمورد انواع معماری ها توی موبایل و فرانت و بکند هستش و بببینیم چطوری میتونیم یک معماری خوب رو برای پروژه خودمون انتخاب کنیم

برای شرکت توی دورهم میتونید از فرم زیر اقدام کنید (کاملا رایگان)

https://forms.gle/g24gHfpGegs1vvAr5
MVC
توسط ایشون ابداع شده توی دهه ی 70 میلادی😅😅 (بیشتر ار 40 سال پیش)

همین چند وقت پیش توی سن 93 سالگی مرد...

برای UI Framework طراحی شده... اگه فکر میکردید که MVC برای بکند ابداع شده, اشتباه فکر میکردید..اولش برای UI فریمورک بوده

البته اون MVC با این MVC که امروزه به اسم MVC جا افتاده فرق داره

@purecoder_ir
دیزاین پترن ها فقط اون ۲۳-۲۴ نیستن

بهتره به اون ها بگیم gof patterns ...

به خیلی چیز ها میشه گفت دیزاین پترن...هر چند که gof pattern ها معروفن به دیزاین پترن ...خیلی پترن ها توی دسته بندی gof patterns نیومدن ...

و هر چند gof pattern ها object oriented pattern ها هستن ولی باز هم هستن OO pattern هایی که توی این دسته بندی ذکر نشدن.

اسم gof pattern اسمی بهتر و توی منابع رسمی پر کاربردتره

@purecoder_ir