🔥چالش طراحی API
❓یه دونه کلاس Order به صورت زیر داریم:
حالا میخوایم یه API برای اضافه کردن یه ایتم جدید (item یا Line) به Order طراحی کنیم.
بنظرت کدوم یک از API های زیر بهتره؟
1️⃣
2️⃣
3️⃣
4️⃣
@purecoder_ir
❓یه دونه کلاس Order به صورت زیر داریم:
class Order{
List<OrderLine> _lines = [];
void AddProduct(Product product, int quantity){
}
}
class OrderLine{
final Product product;
final int quantity;
}
class Product{
final String name;
}
حالا میخوایم یه API برای اضافه کردن یه ایتم جدید (item یا Line) به Order طراحی کنیم.
بنظرت کدوم یک از API های زیر بهتره؟
1️⃣
POST: api/orders/{id}
body
{
product: 1,
quantity: 4
}
2️⃣
PATCH: api/orders/{id}
body
{
product: 1,
quantity: 4
}
3️⃣
POST: api/orders/{id}/lines
body
{
product: 1,
quantity: 4
}
4️⃣
PUT: api/orders/{id}/lines
body
{
product: 1,
quantity: 4
}
@purecoder_ir
Pure Coder
🔥چالش طراحی API ❓یه دونه کلاس Order به صورت زیر داریم: class Order{ List<OrderLine> _lines = []; void AddProduct(Product product, int quantity){ } } class OrderLine{ final Product product; final int quantity; } class Product{ final String…
Please open Telegram to view this post
VIEW IN TELEGRAM
❓به نظرت کامیت های گیت رو بهتره با فعل گذشته بزنیم یا فعل امری ؟
1️⃣حالت اول: فعل گذشته
👉new feature added
2️⃣حالت دوم: فعل امری
👉add new feature
✅توی حالت اول داریم به یه fact ای که اتفاق افتاده اشاره میکنیم و توی حالت دوم مدل ادبیات به گونه ای هست که داریم یه کامند یا دستور رو صادر میکنیم.
❓خارج از بحث استانداردهایی که بعضی ها تعیین کردن و ماهم احتمالن بدون چون و چرا پذیرفتیم و طبق همون ها جلو رفتیم، به نظرت از بین ۲ استایل بالا کدوم یکی بهتره؟
لطفن توی نظر سنجی زیر شرکت کن و اگه توضیحی داری میتونی نظرت رو این پایین بگی...👇
@purecoder_ir
1️⃣حالت اول: فعل گذشته
👉new feature added
2️⃣حالت دوم: فعل امری
👉add new feature
✅توی حالت اول داریم به یه fact ای که اتفاق افتاده اشاره میکنیم و توی حالت دوم مدل ادبیات به گونه ای هست که داریم یه کامند یا دستور رو صادر میکنیم.
❓خارج از بحث استانداردهایی که بعضی ها تعیین کردن و ماهم احتمالن بدون چون و چرا پذیرفتیم و طبق همون ها جلو رفتیم، به نظرت از بین ۲ استایل بالا کدوم یکی بهتره؟
لطفن توی نظر سنجی زیر شرکت کن و اگه توضیحی داری میتونی نظرت رو این پایین بگی...👇
@purecoder_ir
مباحثی که هم ماش همدانی و هم افرادی مثل مکسیمیلیان و ... اموزشش دادن, سطح تدریس و نحوه ی بیان ماش یه سر و گردن از بقیشون بالاتره...
هم الکی اموزشش رو 20 ساعت کش نمیده و توی 5 ساعت جمعش میکنه و هم خیلی مختصر و مفید اون چیزی رو که باید میگه...
مکسیمیلیان که رسمن مثل قرص خواب هست و برای وقتایی که بی خوابی زده به کلت خوبه😂😂😂
ماش هم ایرانیه, بعد میگن ایرانی ها بدرد نمیخورن,...خارجی خوب و تو دل برو هم خیلی کم پیدا میشه. البته هندی ها که فضایی هستن و توی یه دسته بندی دیگه قرار میگیرن😜😜
@purecoder_ir
هم الکی اموزشش رو 20 ساعت کش نمیده و توی 5 ساعت جمعش میکنه و هم خیلی مختصر و مفید اون چیزی رو که باید میگه...
مکسیمیلیان که رسمن مثل قرص خواب هست و برای وقتایی که بی خوابی زده به کلت خوبه😂😂😂
ماش هم ایرانیه, بعد میگن ایرانی ها بدرد نمیخورن,...خارجی خوب و تو دل برو هم خیلی کم پیدا میشه. البته هندی ها که فضایی هستن و توی یه دسته بندی دیگه قرار میگیرن😜😜
@purecoder_ir
⛔️🙅♂🙅♀تفکر باینری
ما برنامه نویس ها کدهامون در نهایت به صورت باینری توسط ماشین ترجمه و تفسیر میشه، ولی خودمون نباید باینری فکر کنیم.
تفکر و تحلیل صفر و یکی خیلی مواقع خطرناک میشه.
دنیای بیرون که قراره ما راه حلی براش ارائه کنیم باینری نیست. اگه قراره که ما یه پلی بین دنیا و ماشین ها باشیم، خودمون نباید شبیه ماشین های باینری که فقط صفر و یک میفهمن عمل کنیم.
@purecoder_ir
ما برنامه نویس ها کدهامون در نهایت به صورت باینری توسط ماشین ترجمه و تفسیر میشه، ولی خودمون نباید باینری فکر کنیم.
تفکر و تحلیل صفر و یکی خیلی مواقع خطرناک میشه.
دنیای بیرون که قراره ما راه حلی براش ارائه کنیم باینری نیست. اگه قراره که ما یه پلی بین دنیا و ماشین ها باشیم، خودمون نباید شبیه ماشین های باینری که فقط صفر و یک میفهمن عمل کنیم.
@purecoder_ir
⛔️🙅♂🙅♀تفکر باینری
یکی از جاهایی که تفکر باینری گریبان ما رو میگیره اینه که توی بیشتر موقعیت ها به دنبال best practice ها و bad practice ها میگردیم که best رو انجام بدیم و از bad ها اجتناب کنیم. یا دنبال یه شابلون میگردیم که بهمون بدن و ازش همه جا استفاده کنیم و طبق اون کد بزنیم.
در حالیکه در واقعیت خیلی بهترین و بدترین معنایی نداره. همون طور که توی دنیای واقعی خوب یا بد بودن بیشتر حقیقت ها نسبی هستن و خیلی به ندرت بد مطلق و خوب مطلق داریم، توی دنیای نرم افزار هم به همین شکل هست و نباید به صورت باینری به داستان نگاه کنیم.
اگه نگاهی به روزمره ی خودمون بندازیم، میبینیم که توی جریان زندگی به طور پیوسته در حال سبک و سنگین کردن و تصمیم گیری براساس شرایط هستیم.
چی میشه که وقتی به دنیای نرم افزار قدم میگذاریم به یک باره تغییر مسیر میدیم و میخوایم همه چیز رو صفر و یک ببینیم و best و bad ها رو با یه خط مرزی کاملن مشخص تفکیک کنیم؟
واقعیت اینه که بیشترین چیزی که باید به دنبالش باشیم trade off و تصمیم گیری بر اساس شرایط هست.
بیشتر از تمرکز بر best practice ها و bad practice ها و تکرارشون توی کد و دیزاین، باید دلایل پشت راه حل های مختلف رو بدونیم و به جای اینکه برای هر problem فقط یه راه حل توی جیبمون داشته باشیم و بقیه راه حل ها رو بکوبیم، باید بتونیم بهترین رو با بررسی همه ی جوانب انتخاب کنیم.
@purecoder_ir
یکی از جاهایی که تفکر باینری گریبان ما رو میگیره اینه که توی بیشتر موقعیت ها به دنبال best practice ها و bad practice ها میگردیم که best رو انجام بدیم و از bad ها اجتناب کنیم. یا دنبال یه شابلون میگردیم که بهمون بدن و ازش همه جا استفاده کنیم و طبق اون کد بزنیم.
در حالیکه در واقعیت خیلی بهترین و بدترین معنایی نداره. همون طور که توی دنیای واقعی خوب یا بد بودن بیشتر حقیقت ها نسبی هستن و خیلی به ندرت بد مطلق و خوب مطلق داریم، توی دنیای نرم افزار هم به همین شکل هست و نباید به صورت باینری به داستان نگاه کنیم.
اگه نگاهی به روزمره ی خودمون بندازیم، میبینیم که توی جریان زندگی به طور پیوسته در حال سبک و سنگین کردن و تصمیم گیری براساس شرایط هستیم.
چی میشه که وقتی به دنیای نرم افزار قدم میگذاریم به یک باره تغییر مسیر میدیم و میخوایم همه چیز رو صفر و یک ببینیم و best و bad ها رو با یه خط مرزی کاملن مشخص تفکیک کنیم؟
واقعیت اینه که بیشترین چیزی که باید به دنبالش باشیم trade off و تصمیم گیری بر اساس شرایط هست.
بیشتر از تمرکز بر best practice ها و bad practice ها و تکرارشون توی کد و دیزاین، باید دلایل پشت راه حل های مختلف رو بدونیم و به جای اینکه برای هر problem فقط یه راه حل توی جیبمون داشته باشیم و بقیه راه حل ها رو بکوبیم، باید بتونیم بهترین رو با بررسی همه ی جوانب انتخاب کنیم.
@purecoder_ir
آدم وقتی یه تکنیک، پترن، یا کلن هرچیزی رو به خوبی درک میکنه که بفهمه کجاها نباید ازش استفاده کنه...
اگه یه چیزی رو همه جا دارم استفاده میکنم و همه جا به عنوان یه سولوشن ارائه ش میدم احتمالن به خوبی درکش نکردم.
@purecoder_ir
اگه یه چیزی رو همه جا دارم استفاده میکنم و همه جا به عنوان یه سولوشن ارائه ش میدم احتمالن به خوبی درکش نکردم.
@purecoder_ir
داشتم همین جوری توی pub میچرخیدم که چشمم به پکیج replay bloc خورد که مکانیزم undo و redo رو روی استیت ها پیاده کرده...
بنظرت برای پیاده سازی چنین مکانیزمی(undo و redo) چه پترنی مناسبه؟
بنظرت برای پیاده سازی چنین مکانیزمی(undo و redo) چه پترنی مناسبه؟
Anonymous Quiz
3%
Prototype
20%
State
24%
Memento
3%
Flyweight
50%
نمیدونم، دیدن جواب
Pure Coder
داشتم همین جوری توی pub میچرخیدم که چشمم به پکیج replay bloc خورد که مکانیزم undo و redo رو روی استیت ها پیاده کرده...
بنظرت برای پیاده سازی چنین مکانیزمی(undo و redo) چه پترنی مناسبه؟
بنظرت برای پیاده سازی چنین مکانیزمی(undo و redo) چه پترنی مناسبه؟
خب درصد خوبی از دوستان درست گفتن که خوشحال کننده هست.
البته اسم دیگه ی این پترن اسنپ شات هست که خودم شخصن با اسم اسنپ شات بیشتر ارتباط میگیرم.
به یه ابجکت میگی یه اسنپ شات از استیت فعلی خودت بگیر و بهم بده و اونو یه جا ذخیره میکنی و بعدش که خواستی اون ابجکت رو به استیت قدیمی خودش برگردونی یکی از اسنپ شات های قدیمی رو بهش میدی و میگی خودت رو به این وضعیت برگردون.
معمولن توی پیاده سازی این مکانیزم پترن هایی مثل کامند هم در کنار اسنپ شات وارد میشن تا کار رو تکمیل کنن.
@purecoder_ir
البته اسم دیگه ی این پترن اسنپ شات هست که خودم شخصن با اسم اسنپ شات بیشتر ارتباط میگیرم.
به یه ابجکت میگی یه اسنپ شات از استیت فعلی خودت بگیر و بهم بده و اونو یه جا ذخیره میکنی و بعدش که خواستی اون ابجکت رو به استیت قدیمی خودش برگردونی یکی از اسنپ شات های قدیمی رو بهش میدی و میگی خودت رو به این وضعیت برگردون.
معمولن توی پیاده سازی این مکانیزم پترن هایی مثل کامند هم در کنار اسنپ شات وارد میشن تا کار رو تکمیل کنن.
@purecoder_ir
Forwarded from Fluttery's Journey
✂️تخفیف ویژه دوره Fluttery's Journey
😍دوستان عزیز از الان تا پایان عید نوروز تخفیف ویژه ۵۵ درصدی روی دوره فلاتر داریم
🔥۱۰ فصل دوره تکمیل شده که میتونی توی تصویر بالا ببینی...
🔗توضیحات دوره رو از لینک زیر ببین👇
https://purecoder.ir/course/flutterys-journey/
🆔️برای مشاوره یا ثبت نام هم میتونی به پشتبانی پیام بدی👇
@purecoder_support
🟢موضوع دوره: بک گراند فلاتر
💰هزينه دوره: ۲ میلیون
✂️هزینه با تخفیف ۵۵ درصد: ۹۰۰
تخفیف تا پایان عید نوروز فعال هست.
😍دوستان عزیز از الان تا پایان عید نوروز تخفیف ویژه ۵۵ درصدی روی دوره فلاتر داریم
🔥۱۰ فصل دوره تکمیل شده که میتونی توی تصویر بالا ببینی...
🔗توضیحات دوره رو از لینک زیر ببین👇
https://purecoder.ir/course/flutterys-journey/
🆔️برای مشاوره یا ثبت نام هم میتونی به پشتبانی پیام بدی👇
@purecoder_support
🟢موضوع دوره: بک گراند فلاتر
💰هزينه دوره: ۲ میلیون
✂️هزینه با تخفیف ۵۵ درصد: ۹۰۰
تخفیف تا پایان عید نوروز فعال هست.
Forwarded from Fluttery's Journey
✂️تخفیف ویژه دوره Fluttery's Journey
😍دوستان عزیز از الان تا پایان عید نوروز تخفیف ویژه ۵۵ درصدی روی دوره فلاتر داریم
🔥۱۰ فصل دوره تکمیل شده که میتونی توی تصویر بالا ببینی...
🔗توضیحات دوره رو از لینک زیر ببین👇
https://purecoder.ir/course/flutterys-journey/
🆔️برای مشاوره یا ثبت نام هم میتونی به پشتبانی پیام بدی👇
@purecoder_support
🟢موضوع دوره: بک گراند فلاتر
💰هزينه دوره: ۲ میلیون
✂️هزینه با تخفیف ۵۵ درصد: ۹۰۰
تخفیف تا پایان عید نوروز فعال هست.
😍دوستان عزیز از الان تا پایان عید نوروز تخفیف ویژه ۵۵ درصدی روی دوره فلاتر داریم
🔥۱۰ فصل دوره تکمیل شده که میتونی توی تصویر بالا ببینی...
🔗توضیحات دوره رو از لینک زیر ببین👇
https://purecoder.ir/course/flutterys-journey/
🆔️برای مشاوره یا ثبت نام هم میتونی به پشتبانی پیام بدی👇
@purecoder_support
🟢موضوع دوره: بک گراند فلاتر
💰هزينه دوره: ۲ میلیون
✂️هزینه با تخفیف ۵۵ درصد: ۹۰۰
تخفیف تا پایان عید نوروز فعال هست.
بچه ها سال نوتون مبارک 🩵
بعضیا از امروز رفتن سر کار، بعضیا تا آخر عید توی استراحت و خوابن 🤪 و بعضیا هم توی مسافرت ...
امیدوارم در مجموع روزهای خوبی داشته باشین و در پایان برآیند امسالتون مثبت باشه😍
@purecoder_ir
بعضیا از امروز رفتن سر کار، بعضیا تا آخر عید توی استراحت و خوابن 🤪 و بعضیا هم توی مسافرت ...
امیدوارم در مجموع روزهای خوبی داشته باشین و در پایان برآیند امسالتون مثبت باشه😍
@purecoder_ir
❓وقتی میخوام توی یه چیزی عمیق بشم، فرایند یادگیری باید به چه صورت باشه؟
🌳وقتی یه درخت تنومند و کهن رو میبینی، در نگاه اول شاید به نظر برسه که ریشه ش به صورت عمودی توی زمین رشد کرده و پایین رفته ولی اگه بخوای ريشه رو از زمین بیرون بکشی میبینی که نه تنها به صورت عمودی پایین رفته بلکه چندین و چند متر هم در راستای افقی گسترده شده و وقتی ریشه رو بالا میاری کلی چیز دیگه رو هم با خودش بیرون میکشه.
📚توی فرآیند یادگیری هم نمیتونیم بگیم من یه مبحث(مثلن تست نویسی) رو برمیدارم و توش عمیق میشم و کاری با بقیه چیزا ندارم.
🔗بخوای یا نخوای مباحث مختلف به یکدیگه گره خوردن و تار و پودشون به هم تنیده شده.
🤔راهش چیه پس؟
🛣راهش اینه که انقدر در سطح حرکت کنی و حرکات لایه ای ملایم داشته باشی و کم کم لایه برداری کنی تا به عمق برسی.
⏳به طور حتم زمان زیادی باید صرف کنی و از روز و ماه خارجه ولی خب پیوستگی و یک پارچگی بین موضوع های مختلف رو هم حفظ کردی و اینجوری نیست که فقط توی یه چیز عمیق شده باشی و هیچ چیز دیگه رو بلد نباشی و یه غول بی شاخ و دم از توش در بیاری.
👈پس انقدر در سطح حرکت کن تا عمیق بشی. البته حرکت هوشمندانه...
@purecoder_ir
🌳وقتی یه درخت تنومند و کهن رو میبینی، در نگاه اول شاید به نظر برسه که ریشه ش به صورت عمودی توی زمین رشد کرده و پایین رفته ولی اگه بخوای ريشه رو از زمین بیرون بکشی میبینی که نه تنها به صورت عمودی پایین رفته بلکه چندین و چند متر هم در راستای افقی گسترده شده و وقتی ریشه رو بالا میاری کلی چیز دیگه رو هم با خودش بیرون میکشه.
📚توی فرآیند یادگیری هم نمیتونیم بگیم من یه مبحث(مثلن تست نویسی) رو برمیدارم و توش عمیق میشم و کاری با بقیه چیزا ندارم.
🔗بخوای یا نخوای مباحث مختلف به یکدیگه گره خوردن و تار و پودشون به هم تنیده شده.
🤔راهش چیه پس؟
🛣راهش اینه که انقدر در سطح حرکت کنی و حرکات لایه ای ملایم داشته باشی و کم کم لایه برداری کنی تا به عمق برسی.
⏳به طور حتم زمان زیادی باید صرف کنی و از روز و ماه خارجه ولی خب پیوستگی و یک پارچگی بین موضوع های مختلف رو هم حفظ کردی و اینجوری نیست که فقط توی یه چیز عمیق شده باشی و هیچ چیز دیگه رو بلد نباشی و یه غول بی شاخ و دم از توش در بیاری.
👈پس انقدر در سطح حرکت کن تا عمیق بشی. البته حرکت هوشمندانه...
@purecoder_ir
❓کدوم زبان برنامه نویسی پیرتره؟
9⃣زبان rust متولد سال ۲۰۱۲ و ۱۳ سالشه.
8⃣دارت فقط چند ماه بزرگتره، متولد سال ۲۰۱۱ عه.
کاتلین برادر ناتنی دارت هم توی همین سال از لوله های ازمایشگاه بیرون اومد.
7⃣زبان go از هر دوشون بزرگتره و سال ۲۰۰۹ به دستان مبارک گوگل خلق شد.
6⃣سی شارپ همچنان از بچه ها ی قرن ۲۱ ام هست و سال ۲۰۰۰ به دنیا اومده.
5⃣پنجمی مشترک میرسه به PHP و جاوا که هر دو سال ۱۹۹۵ اولین نسخشون بیرون اومد 🤔
4⃣پایتون فرزند ارشد خانواده هم سال ۱۹۹۱ متولد شده.
3⃣و اما c++ به دوران پختگی خودش رسیده و امسال ۴۰ سالگی رو تموم میکنه و وارد دهه ی پنجم زندگی میشه (۱۹۸۵)
2⃣و اما C هم دیگه وقت بازنشستگیش هست و با ۵۳ سال سن دیگه نای دویدن نداره (۱۹۷۲).
البته که تنها نیست و smalltalk رو در کنار خودش میبینه.
(باهم میرن توی پارک شطرنج میزنن )
1⃣و اما پیرمرد پیرمرد ها هم کسی نیست جز فرترن که داره با پوکی استخون دوران ۷۰ سالگی دست و پنجه نرم میکنه. (زمان کودتای ۱۳۳۲، فرترن مال اون موقع هاست 😅😅)
❓هم سن کدوم زبان هستی ؟
@purecoder_ir
9⃣زبان rust متولد سال ۲۰۱۲ و ۱۳ سالشه.
8⃣دارت فقط چند ماه بزرگتره، متولد سال ۲۰۱۱ عه.
کاتلین برادر ناتنی دارت هم توی همین سال از لوله های ازمایشگاه بیرون اومد.
7⃣زبان go از هر دوشون بزرگتره و سال ۲۰۰۹ به دستان مبارک گوگل خلق شد.
6⃣سی شارپ همچنان از بچه ها ی قرن ۲۱ ام هست و سال ۲۰۰۰ به دنیا اومده.
5⃣پنجمی مشترک میرسه به PHP و جاوا که هر دو سال ۱۹۹۵ اولین نسخشون بیرون اومد 🤔
4⃣پایتون فرزند ارشد خانواده هم سال ۱۹۹۱ متولد شده.
3⃣و اما c++ به دوران پختگی خودش رسیده و امسال ۴۰ سالگی رو تموم میکنه و وارد دهه ی پنجم زندگی میشه (۱۹۸۵)
2⃣و اما C هم دیگه وقت بازنشستگیش هست و با ۵۳ سال سن دیگه نای دویدن نداره (۱۹۷۲).
البته که تنها نیست و smalltalk رو در کنار خودش میبینه.
(باهم میرن توی پارک شطرنج میزنن )
1⃣و اما پیرمرد پیرمرد ها هم کسی نیست جز فرترن که داره با پوکی استخون دوران ۷۰ سالگی دست و پنجه نرم میکنه. (زمان کودتای ۱۳۳۲، فرترن مال اون موقع هاست 😅😅)
❓هم سن کدوم زبان هستی ؟
@purecoder_ir