🔥 Test Frameworks
✅XUnit (C#)
✅JUnit (JAVA)
✅Dart
✅بهترین و مدرن ترین گزینه xunit هست. JUnit وصله پینه زیاد داره و با فرهنگ حال و حاضر مچ نیست، ولی قابل قبوله و همچنان یه گزینه خوب محسوب میشه.
✅دارت شبیه JUnit هست.
@purecoder_ir
✅XUnit (C#)
public class CalculatorTests
{
[Fact]
public void Add_TwoNumbers_ReturnsSum()
{
// Arrange
var a = 2;
var b = 3;
// Act
var result = Add(a, b);
// Assert
Assert.Equal(5, result);
}
private int Add(int x, int y)
{
return x + y;
}
}
✅JUnit (JAVA)
class CalculatorTests {
@Test
void add_TwoNumbers_ReturnsSum() {
// Arrange
int a = 2;
int b = 3;
// Act
int result = add(a, b);
// Assert
assertEquals(5, result);
}
private int add(int x, int y) {
return x + y;
}
}
✅Dart
void main() {
test('add_TwoNumbers_ReturnsSum', () {
// Arrange
final a = 2;
final b = 3;
// Act
final result = add(a, b);
// Assert
expect(result, equals(5));
});
}
✅بهترین و مدرن ترین گزینه xunit هست. JUnit وصله پینه زیاد داره و با فرهنگ حال و حاضر مچ نیست، ولی قابل قبوله و همچنان یه گزینه خوب محسوب میشه.
✅دارت شبیه JUnit هست.
@purecoder_ir
انیمیشن ها توی فلاتر از کدوم پترن استفاده میکنن ؟
Anonymous Quiz
10%
Decorator
12%
Composite
36%
Observer
4%
Visitor
38%
نمیدونم، دیدن جواب
توی فریمورک های موبایل مثل فلاتر یا کامپوز یا ... برای چیزایی مثل باتن ها، onClicked یا onPressed یا ... داریم که وقتی روشون tap میشه یه کاری انجام بدن.
اینجا از چه پترنی استفاده میشه؟
اینجا از چه پترنی استفاده میشه؟
Anonymous Quiz
9%
Proxy
23%
Template Method
27%
Observer
16%
Command
25%
نمیدونم، دیدن جواب
پترن ها مثل الفبا و زبان مشترک کدنویسی هستن.
توسعه دهنده های فریمورک ها باید به همه ی اون ها مسلط باشن و تجربه ی کافی در استفاده از اون ها رو داشته باشن.
بدون تسلط کامل به همه ی اونها امکان توسعه ی فریمورک خوب وجود نداره و با درک اون ها، درک فریمورک های استاندارد راحت میشه چون که همگی از یک زبان مشترک پیروی میکنن.
فریمورک های خوب رو از طریق نحوه ی استفاده شون از پترن های استاندارد تشخیص بدید.
پترن ها در جریان همین توسعه ها و چالش ها ابداع شدن و کاملن از دل تجربه بیرون اومدن و من درآوردی نیستن.
@purecoder_ir
توسعه دهنده های فریمورک ها باید به همه ی اون ها مسلط باشن و تجربه ی کافی در استفاده از اون ها رو داشته باشن.
بدون تسلط کامل به همه ی اونها امکان توسعه ی فریمورک خوب وجود نداره و با درک اون ها، درک فریمورک های استاندارد راحت میشه چون که همگی از یک زبان مشترک پیروی میکنن.
فریمورک های خوب رو از طریق نحوه ی استفاده شون از پترن های استاندارد تشخیص بدید.
پترن ها در جریان همین توسعه ها و چالش ها ابداع شدن و کاملن از دل تجربه بیرون اومدن و من درآوردی نیستن.
@purecoder_ir
یه بنده خدایی بود چندین سال پیش آموزش معماری کلین میداد ( الان خدا بیامرز شده و اصلن نیستش، نگین داری مدرس ها رو بدنام میکنی)
این بنده خدا برای هر موجودیتی چنتا کلاس کپی کپی هم میساخت و توی لایه های مختلف میذاشت...
مثلن
UserDo
UserData
User
اون که پسوند Do داشت رو میذاشت توی domain و اون که Data داشت هم که مشخصه و اون که هیچی نداشت هم توی view.
نمیدونم چرا خدا بیامرز از کلمه ی Do استفاده میکرد.
ما هم کپی میکردیم و مثل اون میرفتیم😂😂
@purecoder_ir
این بنده خدا برای هر موجودیتی چنتا کلاس کپی کپی هم میساخت و توی لایه های مختلف میذاشت...
مثلن
UserDo
UserData
User
اون که پسوند Do داشت رو میذاشت توی domain و اون که Data داشت هم که مشخصه و اون که هیچی نداشت هم توی view.
نمیدونم چرا خدا بیامرز از کلمه ی Do استفاده میکرد.
ما هم کپی میکردیم و مثل اون میرفتیم😂😂
@purecoder_ir
برق که میره اینترنت قطع میشه، وسایل گرمایشی کار نمیکنن، آب قطع میشه و ...
معلوم میشه اینا خوب دیزاین نشده و خیلی بهم دیگه دپندنسی دارن😳
خونه ی ما تلفن هم قطع میشه 😳 دپندنسی ها خیلی زیاده
تقصیر دولت نیست، اینایی که خونه ها رو دیزاین کردن مقصرن😳
ایسوس هم مقصره که باتری لبتاب هاش انقدر بیخودین😳
@purecoder_ir
معلوم میشه اینا خوب دیزاین نشده و خیلی بهم دیگه دپندنسی دارن😳
خونه ی ما تلفن هم قطع میشه 😳 دپندنسی ها خیلی زیاده
تقصیر دولت نیست، اینایی که خونه ها رو دیزاین کردن مقصرن😳
ایسوس هم مقصره که باتری لبتاب هاش انقدر بیخودین😳
@purecoder_ir
توی اپ مون قراره برای کاربران پیامک ارسال کنیم برای این منظور قراره از ارائه دهنده های سرویس پیامک مختلف استفاده کنیم.
مثلن sms ir و ملی پیامک و ...
در نتیجه ی کش و قوس های فراوان تصمیم میگیریم که یه اینترفیس بذاریم و بعدش کلاس های مختلف داشته باشیم که implement اش میکنن ( برای هر ارائه دهنده ی سرویس پیامک یک کلاس)
مثلن sms ir و ملی پیامک و ...
در نتیجه ی کش و قوس های فراوان تصمیم میگیریم که یه اینترفیس بذاریم و بعدش کلاس های مختلف داشته باشیم که implement اش میکنن ( برای هر ارائه دهنده ی سرویس پیامک یک کلاس)
اینجا از چه پترنی استفاده کردیم ؟
Anonymous Poll
10%
Facade
37%
Strategy
24%
Adapter
5%
هیچکدام، توی کامنت بگو
23%
نمیدونم
توی بعضی آگهی های استخدامی مثلن میزنه به توسعه دهنده ی ارشد یا توسعه دهنده ی سنیور نیاز داریم و میزان حقوق رو ۲۵ تومن میزنه یا ۳۰ تومن میزنه یا ....
ممکنه در نگاه اول به ذهنت بیاد که کدوم سنیوری ۲۵ یا ۳۰ میگیره؟
توجه به یک نکته اهمیت زیادی داره که این واژه ها تعریف مطلقی ندارن و خیلی نسبی هستن و تعریف تو از ارشد و سنیور ممکنه با تعریف یه نفر دیگه تفاوت داشته باشه، پس به جای تمرکز کردن روی عنوان اگهی، نیازمندی ها و توضیحات آگهی رو بخون و با توجه به اون سبک سنگین کن که میرزه یا نه.
حتا بعضی مواقع بعد از مصاحبه باید تصمیم نهایی رو بگیری.
حتا ممکنه به ذهنت بیاد که من ارشد و سنیور نیستم و آگهی رو بیخیال شی.
باز هم تاکید میکنم که تعاریف متفاوت هست، نیازمندی ها رو ببین و با توجه به اون ها تصمیم بگیر که تو مناسب اون موقعیت هستی و یا نه.
این داستان از اون طرفش هم هست، مثلن ممکنه که بزنه توسعه دهنده میدلول لازم داریم و تو پیش خودت بگی من که سنیورم و برام افت داره رزومه بفرستم. ممکنه توی دنیای خودت سنیور باشی و جاهای دیگه ... .
@purecoder_ir
ممکنه در نگاه اول به ذهنت بیاد که کدوم سنیوری ۲۵ یا ۳۰ میگیره؟
توجه به یک نکته اهمیت زیادی داره که این واژه ها تعریف مطلقی ندارن و خیلی نسبی هستن و تعریف تو از ارشد و سنیور ممکنه با تعریف یه نفر دیگه تفاوت داشته باشه، پس به جای تمرکز کردن روی عنوان اگهی، نیازمندی ها و توضیحات آگهی رو بخون و با توجه به اون سبک سنگین کن که میرزه یا نه.
حتا بعضی مواقع بعد از مصاحبه باید تصمیم نهایی رو بگیری.
حتا ممکنه به ذهنت بیاد که من ارشد و سنیور نیستم و آگهی رو بیخیال شی.
باز هم تاکید میکنم که تعاریف متفاوت هست، نیازمندی ها رو ببین و با توجه به اون ها تصمیم بگیر که تو مناسب اون موقعیت هستی و یا نه.
این داستان از اون طرفش هم هست، مثلن ممکنه که بزنه توسعه دهنده میدلول لازم داریم و تو پیش خودت بگی من که سنیورم و برام افت داره رزومه بفرستم. ممکنه توی دنیای خودت سنیور باشی و جاهای دیگه ... .
@purecoder_ir
🔥SQL
توی کوئری های پیچیده، دونستن این ترتیب برای اینکه بدونیم داره چه اتفاقی میوفته مهمه...
@purecoder_ir
توی کوئری های پیچیده، دونستن این ترتیب برای اینکه بدونیم داره چه اتفاقی میوفته مهمه...
@purecoder_ir
Pure Coder
s?
درصد قابل توجهی گفتن که این نام گذاری خوب نیست.
احتمالن بخاطر مخفف بودن این رو گفتن.
درحالیکه این نام گذاری خوبه و ایرادی نداره.
توی نام گذاری باید به اسکوپی که اون variable استفاده میشه دقت کنیم. اینجا قراره توی یه اسکوپ کوچیک استفاده بشه و نام هاي کوچیک و جمع و جور خیلی هم مناسب هستن و فهم کد رو سخت نمیکنن.
در واقع برای کلین بودن کد باید خود بدنه ی for کوچیک باشه(تا جای امکان یک خطی باشه)
حتا میشه از نام های دیگه استفاده کرد.
مثل x
خیلی هم بهترن و همه ی Loop ها رو شبیه به هم میکنه و به راحتی ابجکتی که داره پیمایش میشه رو تشخیص میدیم.
توی کل کدتون از یه قرارداد ثابت استفاده کنید.
@purecoder_ir
احتمالن بخاطر مخفف بودن این رو گفتن.
درحالیکه این نام گذاری خوبه و ایرادی نداره.
توی نام گذاری باید به اسکوپی که اون variable استفاده میشه دقت کنیم. اینجا قراره توی یه اسکوپ کوچیک استفاده بشه و نام هاي کوچیک و جمع و جور خیلی هم مناسب هستن و فهم کد رو سخت نمیکنن.
در واقع برای کلین بودن کد باید خود بدنه ی for کوچیک باشه(تا جای امکان یک خطی باشه)
حتا میشه از نام های دیگه استفاده کرد.
مثل x
خیلی هم بهترن و همه ی Loop ها رو شبیه به هم میکنه و به راحتی ابجکتی که داره پیمایش میشه رو تشخیص میدیم.
توی کل کدتون از یه قرارداد ثابت استفاده کنید.
@purecoder_ir
لیست ها و کالکشن ها برای اینکه بتونن قابلیت پیمایش شدن روی Element های خودشون رو فراهم کنن، چه پترنی رو پیاده میکنن ؟
Anonymous Quiz
10%
Observer
7%
Visitor
65%
Iterator
5%
State
13%
نمیدونم، دیدن جواب
Pure Coder
لیست ها و کالکشن ها برای اینکه بتونن قابلیت پیمایش شدن روی Element های خودشون رو فراهم کنن، چه پترنی رو پیاده میکنن ؟
❓آیا فقط برای لیست ها هست؟
✅خیر.
✅هر دیتااستراکچری که داشته باشیم، حتا یه Tree، میشه از این پترن براش استفاده کرد تا بدون اینکه ساختار داخلی خودش رو به بیرون درز بده, الگوریتم دلخواه خودش برای پیمایش کردن Element خودش رو پیاده کنه و همچنین همه ی دیتااستراکچر ها یه زبان مشترک داشته باشن.
✅دیتااستراکچر هایی که این پترن رو پیاده کرده باشن میتونن توی for loop قرار بگیرن...
@purecoder_ir
✅خیر.
✅هر دیتااستراکچری که داشته باشیم، حتا یه Tree، میشه از این پترن براش استفاده کرد تا بدون اینکه ساختار داخلی خودش رو به بیرون درز بده, الگوریتم دلخواه خودش برای پیمایش کردن Element خودش رو پیاده کنه و همچنین همه ی دیتااستراکچر ها یه زبان مشترک داشته باشن.
✅دیتااستراکچر هایی که این پترن رو پیاده کرده باشن میتونن توی for loop قرار بگیرن...
@purecoder_ir
بنظرتون توکن JWT رو وقتی که میخواید سمت کلاینت(موبایل یا ...) ذخیره کنید باید هش کنید و درست نیست بدون هش کردن ذخیرش کرد؟
دلیلتون رو هم توی کامنت بگید🙏
دلیلتون رو هم توی کامنت بگید🙏
Anonymous Poll
36%
آره حتمن نیازه
64%
نه نیازی نیست
بنظرت کدوم کد بهتره؟
توضیحی داشتی توی کامنت بگو🙏🙏
@purecoder_ir
1⃣
static double Divide(double a, double b)
{
return a / b; // Perform the division
}
2⃣
static double Divide(double a, double b)
{
if (b == 0)
{
return double.NaN; // Return NaN to indicate an error (division by zero)
}
return a / b; // Perform the division
}
3⃣
static double Divide(double a, double b)
{
if (b == 0)
{
throw new DivideByZeroException();
}
return a / b; // Perform the division
}
4⃣
static double Divide(double a, NonZero b)
{
return a / b.Value; // Perform the division using the Value property of NonZero
}
توضیحی داشتی توی کامنت بگو🙏🙏
@purecoder_ir
Pure Coder
توی اپ مون قراره برای کاربران پیامک ارسال کنیم برای این منظور قراره از ارائه دهنده های سرویس پیامک مختلف استفاده کنیم. مثلن sms ir و ملی پیامک و ... در نتیجه ی کش و قوس های فراوان تصمیم میگیریم که یه اینترفیس بذاریم و بعدش کلاس های مختلف داشته باشیم که…
🔥خب بریم سر وقت داستان فرستادن پیامک و اینترفیس زدن و implementation های مختلف برای هر provider:
❌هر گردی گردو نیست.
استراتژی اشتباه ترین گزینه بود.
❌فساد و اداپتر هم گزینه های اشتباهی بودن ولی نسبت به استراتژی خیلی خیلی معقول تر بودن و دوستانی که این دو رو انتخاب کردن تحلیل بهتری پیش خودشون داشتن.
و بنظرم اداپتر نسبت به فساد انتخاب بهتری بود و دوستانی که اداپتر رو انتخاب کردن احتمالن تحلیل ذهنی بهتری داشتن.
ولی در حال گزینه درست رو انتخاب نکردن.
✅و اما گزینه ی درست هیچکدام بود.
@purecoder_ir
❌هر گردی گردو نیست.
استراتژی اشتباه ترین گزینه بود.
❌فساد و اداپتر هم گزینه های اشتباهی بودن ولی نسبت به استراتژی خیلی خیلی معقول تر بودن و دوستانی که این دو رو انتخاب کردن تحلیل بهتری پیش خودشون داشتن.
و بنظرم اداپتر نسبت به فساد انتخاب بهتری بود و دوستانی که اداپتر رو انتخاب کردن احتمالن تحلیل ذهنی بهتری داشتن.
ولی در حال گزینه درست رو انتخاب نکردن.
✅و اما گزینه ی درست هیچکدام بود.
@purecoder_ir
❓بنظرت کدوم یک از کدهای زیر بهتره و راحتر میتونی بخونی و بفهمیش؟
(این کد قراره عامل های اول عدد n رو محاسبه کنه!!!)
توضیحی داشتی توی کامنت بگو 🙏😍
@purecoder_ir
(این کد قراره عامل های اول عدد n رو محاسبه کنه!!!)
1⃣
List<int> PrimeFactorsOf(int n)
{
var factors = new List<int>();
int divisor = 2;
while (n > 1)
{
while (n % divisor == 0)
{
factors.Add(divisor);
n /= divisor;
}
divisor++;
}
return factors;
}
2⃣
List<int> PrimeFactorsOf(int n)
{
var factors = new List<int>();
for (int divisor = 2; n > 1; divisor++)
for (; n % divisor == 0; n /= divisor)
factors.Add(divisor);
return factors;
}
توضیحی داشتی توی کامنت بگو 🙏😍
@purecoder_ir