❓ در نمونه کد بالا در نسخهٔ اول برای محاسبهٔ میانگین یک کالکشن از اعداد، تمام دادهها دو بار پیمایش و چندین بار boxing/unboxing انجام میشود که هم روی کارایی و هم روی مصرف مموری در سناریوهای پردازش حجم بالای داده تأثیر منفی دارد. با استفاده از Generic و Delegate مناسب (مثل
🔖 #CSharp #سی_شارپ
👤 Developix
💎 Channel: @DevelopixCSharp
Func<T, double>) میتوان منطق را طوری پیادهسازی کرد که هم type-safe باشد و هم فقط یک بار روی دادهها پیمایش شود. کدام نسخه از این پیادهسازی در سناریوهای real-world (مثلاً پردازش لاگ، دادههای سنسور یا تراکنشها) مناسبتر است و چرا استفاده از object و is چکهای پیاپی میتواند به یک Anti Pattern در طراحی APIهای عمومی تبدیل شود؟🔖 #CSharp #سی_شارپ
👤 Developix
💎 Channel: @DevelopixCSharp
👎1
🕒 NodaTime؛ خداحافظ DateTime گیجکننده
کار با
اینجا NodaTime وارد میشه؛ یک کتابخانه قدرتمند برای مدیریت زمان و تاریخ که مدلش خیلی شفافتر از
چرا NodaTime؟
• تایپهای واضح مثل
• پشتیبانی دقیق از IANA Time Zone
• جلوگیری از باگهای زمانبندی، مخصوصاً اطراف تغییر ساعت (DST)
• API تمیز و قابل تست؛ مخصوصاً برای Domain-Driven Design
نصب با NuGet:
نمونه استفاده ساده:
برای هر سرویسی که زمان و زمانبندی توش مهمه، همراه کردنش با NodaTime جلوی کلی Memory Bug و رفتار عجیب رو میگیره. پیشنهاد میشه حتماً تو پروژه بعدی امتحان بشه و کمکم
مستندات رسمی:
Website & Docs
GitHub
🔖 #CSharp #سی_شارپ #CSharp #NodaTime #_NET #Time #DateTime #Backend
👤 Developix
💎 Channel: @DevelopixCSharp
کار با
DateTime و TimeZone در .NET مخصوصاً در پروژههای چندمنطقهای واقعاً دردسرسازه؛ از UTC و Local گرفته تا DST و Offsetهای مختلف. اینجا NodaTime وارد میشه؛ یک کتابخانه قدرتمند برای مدیریت زمان و تاریخ که مدلش خیلی شفافتر از
DateTime پیشفرضه و توی پروژههای مالی، رزرو، لاگینگ و سرویسهای بینالمللی عالی جواب میده. 🚀چرا NodaTime؟
• تایپهای واضح مثل
Instant، LocalDate، LocalDateTime، ZonedDateTime• پشتیبانی دقیق از IANA Time Zone
• جلوگیری از باگهای زمانبندی، مخصوصاً اطراف تغییر ساعت (DST)
• API تمیز و قابل تست؛ مخصوصاً برای Domain-Driven Design
نصب با NuGet:
dotnet add package NodaTime
نمونه استفاده ساده:
using NodaTime;
var now = SystemClock.Instance.GetCurrentInstant();
var tz = DateTimeZoneProviders.Tzdb["Europe/Berlin"];
var zoned = now.InZone(tz);
LocalDate invoiceDate = new(2026, 1, 26);
LocalDate dueDate = invoiceDate.PlusDays(14);
برای هر سرویسی که زمان و زمانبندی توش مهمه، همراه کردنش با NodaTime جلوی کلی Memory Bug و رفتار عجیب رو میگیره. پیشنهاد میشه حتماً تو پروژه بعدی امتحان بشه و کمکم
DateTime خام رو کنار بذاری. 💡مستندات رسمی:
Website & Docs
GitHub
🔖 #CSharp #سی_شارپ #CSharp #NodaTime #_NET #Time #DateTime #Backend
👤 Developix
💎 Channel: @DevelopixCSharp
👍4
در کد زیر تلاش شده یک Singleton ساده پیادهسازی شود، اما هم از نظر Thread-Safety و هم از نظر الگوی طراحی، چند مشکل جدی دارد و در سناریوهای Multi-Thread ممکن است چند نمونه از کلاس ساخته شود.
چه چیزی باید در این پیادهسازی اصلاح شود تا الگوی Singleton بهصورت ایمن و صحیح در سیشارپ پیادهسازی شود؟
🔖 #CSharp #سی_شارپ
👤 Developix
💎 Channel: @DevelopixCSharp
چه چیزی باید در این پیادهسازی اصلاح شود تا الگوی Singleton بهصورت ایمن و صحیح در سیشارپ پیادهسازی شود؟
🔖 #CSharp #سی_شارپ
👤 Developix
💎 Channel: @DevelopixCSharp
در نمونهکد بالا در نسخهی اشتباه، بهجای استفاده از LINQ و عملگرهای آماده برای حذف عناصر تکراری، بهصورت دستی روی لیست حلقه زده شده و برای هر آیتم یک
کدام رویکرد را برای سناریوهای Real-World با حجم داده بالا منطقیتر میدانید و چرا در Collections بزرگ، پرهیز از حلقههای تو در تو (Nested) تا این حد اهمیت دارد؟
🔖 #CSharp #سی_شارپ
👤 Developix
💎 Channel: @DevelopixCSharp
Any() جداگانه روی result صدا زده شده است؛ این کار در سناریوهایی که تعداد رکوردها زیاد است، باعث پیچیدگی زمانی O(n²)، افزایش فشار روی GC و کاهش کارایی میشود. در نسخهی اصلاحشده با استفاده از GroupBy و انتخاب آخرین آیتم هر گروه (براساس Timestamp)، هم کد خواناتر شده و هم فقط یک بار روی مجموعه اصلی پیمایش انجام میشود که در سناریوهای پردازش لاگ یا Events حجیم، مصرف CPU را بهطور محسوسی کاهش میدهد.کدام رویکرد را برای سناریوهای Real-World با حجم داده بالا منطقیتر میدانید و چرا در Collections بزرگ، پرهیز از حلقههای تو در تو (Nested) تا این حد اهمیت دارد؟
🔖 #CSharp #سی_شارپ
👤 Developix
💎 Channel: @DevelopixCSharp
❤1👍1
Forwarded from ابر ویراک
ویراک کلود | تجربهی ابری بدون محدودیت ☁️🚀
🎁 ۲۰٪ شارژ هدیه روی اولین واریزی
مزیتهایی که واقعاً فرق میسازن:
⚡️ پهنای باند 980 مگ
🌐با IP مازاد
⏱️ راهاندازی فوری
💳 پرداخت ساعتی
🛡 پشتیبانی ۲۴/۷
💬 هر سوالی داشتی، تیم ما کنارتـه
✅ مناسب استارتاپها، تیمهای فنی، تا سازمانهای بزرگ
همین الان شروع کن و با حداکثر منابع، سریعتر رشد کن 👇🏻
📞 تماس سریع: 02191555530
🔗 https://virakcloud.com
🎁 ۲۰٪ شارژ هدیه روی اولین واریزی
مزیتهایی که واقعاً فرق میسازن:
⚡️ پهنای باند 980 مگ
🌐با IP مازاد
⏱️ راهاندازی فوری
💳 پرداخت ساعتی
🛡 پشتیبانی ۲۴/۷
💬 هر سوالی داشتی، تیم ما کنارتـه
✅ مناسب استارتاپها، تیمهای فنی، تا سازمانهای بزرگ
همین الان شروع کن و با حداکثر منابع، سریعتر رشد کن 👇🏻
📞 تماس سریع: 02191555530
🔗 https://virakcloud.com