در این نوشتار چند مورد از مفیدترین کلیدهای میانبر ویژوال استودیو شرح داده میشوند. ویژوال استودیو امکانات خوبی را برای سرعت بخشیدن به برنامهنویسی دارد. دانستن این نکات سرعت برنامهنویسی را افزایش خواهد داد. ۱) جابجایی بین تبها: «Ctrl + Tab» با کلیدهای ترکیبی Ctrl + Tab و Ctrl + Shift + Tab میتوانید بین پنجرههای Active جابجا شوید. با کلیدهای جهتنما هم میتوانید به بقیه پنجرهها از جمله Properties منتقل شوید. ناگفته ن ...
کتابها و منابع آموزشی بسیاری در جهت یادگیری برنامه سازی و مهندسی نرم افزار وجود دارند که اکثراً هم مطالب مفید و بسیار خوبی را ارائه میدهند؛ با اینحال یکی از سؤالات بزرگی که بعد از مطالعه آنها در ذهن افراد ممکن است پیش بیاید این است که با خود میپرسند حالا چه کنم؟ از کجا شروع کنم؟ در واقع ذهن افراد پر است از اطلاعات تخصصی بسیار مفید ولی نمیدانند آنها را چگونه سرهم بندی کنند تا یک سیستم نرم افزاری قابل اتکا تولید کنند. توسعه گران با تجر ...
Zstandard یا به اختصار Zstd، یک الگوریتم فشرده سازی سریع و بدون افت کیفیت است که از سرعت و قدرت خوبی برخوردار است. این الگوریتم توسط Facebook توسعه داده شده و استفاده میشود. الگوریتمهای دیگری مانند Snappy (الگوریتم فشرده سازی گوگل)، LZ4 (جز سریعترین الگوریتم ها) و LZMA (جز قویترین الگوریتمها) نیز وجود دارند ولی Zstd تعادل (trade-off) خوبی بین سرعت و میزان فشرده سازی را فراهم میکند. در این مقاله برای فشرده سازی اطلاع ...
بعد از انتشار مطلب «Defensive Programming - بازگشت نتایج قابل پیش بینی توسط متدها »، بخصوص بخش نظرات آن و همچنین R&D در ارتباط با موضوع مورد بحث، در نهایت قصد دارم نتایج بدست آماده را به اشتراک بگذارم. پیش نیازها Exceptions for flow control: why not? Exception handling for flow control is EVIL! Replacing Throwing Exceptions with Notification in Validations نکات کار با استثناءها در دا ...
در این مطلب یکی از اهداف Defensive Programming تحت عنوان Predictability مرتبط با متدها را بررسی کرده و تمرکز اصلی، بر روی مقدار بازگشتی متدها خواهد بود. پیش نیازها مطالب مرتبط با Defensive Programming نکات کار با استثناءها در دات نت به طور کلی، نتیجه حاصل از اجرای یک متد میتواند یکی از حالتهای زیر باشد: متدی تحت عنوان ValidateEmail را تصور کنید. این متد از حیث بازگشت نتیجه به عنوان خروجی م ...
هر چند که #C به عنوان یک زبان ساده برای درک و یادگیری شناخته میشود، گاهی رفتاری غیرمنتظره را حتی برای توسعه دهندههای با تجربه خواهد داشت. در این نوشته مروری بر بعضی از این رفتارها و توضیح دلایل پشت آن خواهیم کرد. Value اگر مقدار null مدیریت نشود، میتواند باعث ایجاد نتایج نامطلوب، یا باعث از کار افتادن برنامه شود. شئ null به خودی خود مخرب نیست؛ اما اگر بخواهیم به یکی از متدها یا خاصیتهای آن دسترسی داشته باشیم، با استثنای معروف ...
DebuggerStepThroughAttribute ویژگی DebuggerStepThroughAttribute باعث میشود که در زمان دیباگ کردن کد، با کلید F11، متدهایی که این ویژگی را دارند، بدون رفتن به داخل متد (همانند دیباگ با کلید F10 عمل میکند، به جز زمانی که در داخل متد break point گذاشته باشید) ، تنها اجرا میشوند. به مثال زیر توجه کنید: class Program
{
public static void Main(string[] args)
{
DebuggerStep ...
Nullable<T>.GetValueOrDefault Method با استفاده از متد GetValueOrDefault مقدار فعلی یک شیء Nullable و یا مقدار پیش فرض آن را میتوان بدست آورد. این متد از عملگر ?? سریعتر است. float? yourSingle = -1.0f;
Console.WriteLine( yourSingle.GetValueOrDefault() );
yourSingle = null;
Console.WriteLine( yourSingle.GetValueOrDefault() );
// assign different default value
Console.WriteLine( yourSingle.GetValueOrDefault ...
Parallel.For & Parallel.ForEach Parallel.For – اجرای یک حلقه for که در آن عملیات تکرار ممکن است به صورت موازی انجام شود. var nums = Enumerable.Range( 0, 1000000 ).ToArray();
long total = 0;
// Use type parameter to make subtotal a long, not an int
Parallel.For< long >( 0, nums.Length, () => 0,
( j, loop, subtotal ) =>
{
...