۴ اشتباه رایج برنامه نویسان سی شارپ
زبان سی شارپ یکی از معروف ترین زبان های برنامه نویسی است. برای نوشتن یک برنامه به صورت بهینه از نظر مصرف حافظه و پردازنده و … نیاز است تا آشنایی کامل با این زبان داشته باشیم. در این مطلب چهار تا از اشتباهاتی را که اکثر برنامه نویسان سی شارپ مرتکب میشوند را بررسی میکنیم. اطلاع نداشتن از این اشتباهات میتواند باعث مشکلات بهینه نبودن و کیفی برنامه شود. به همین دلیل تصمیم گرفتم تا چهار تا از اشتباهات رایج در این زبان را در این مقاله جمع آوری کنم.
۱. استفاده از concatenation به جای استفاده از StringBuilder
کانکت کردن بدین معنی است که با استفاده از عملگر جمع دو یا چند رشته را به هم متصل کنیم. اما این روش در باطن بدین صورت کار میکند که هر باری که شما یک رشته را با یک رشته دیگر جمع میکنید یک آدرس جدید در حافظه به آن تخصیص میابد و مقدار رشته قبلی به همراه مقدار اضافه شده در آدرس جدید کپی میشود که این امر بهینه نیست. این در حالی است که ما میتوانیم از stringBulder که همین کار را بدون عملیات کپی کردن انجام میدهد استفاده کنیم. فایده این کار در مواردی مشخص میشود که شاید چندین یا چند صد رشته را بخواهید به یکدیگر بچسبانید.
//INCORRECT List values = new List(){"This ","is ","Sparta ","!"}; string outputValue = string.Empty; foreach (var value in values) { outputValue += value; } //CORRECT StringBuilder outputValueBuilder = new StringBuilder(); foreach (var value in values) { outputValueBuilder.Append(value); }
۲. پرتاب نادرست استثنا
برنامه نویسان سی شارپ اغلب فراموش میکنند که وقتی از یک استثنا با throw ex گذر میکند قابلیت دیباگ کردن برنامه بخصوص مرور استک را از دست میدهند و دیباگ کردن برنامه را بسیار مشکل میکند و مانع دستیابی به متن گزارش استثنای پیش آمده میشود .وقتی که از دستور throw به درستی استفاده کنیم هیچ داده ای از بین نمیرود و کل طیف استثنا به همراه مرور استک قابل دست یابی است.
//INCORRECT try { //some code that can throw exception [...] } catch (Exception ex) { //some exception logic [...] throw ex; } //CORRECT try { //some code that can throw exception [...] } catch (Exception ex) { //some exception logic [...] throw; }
۳. استفاده نکردن از Using برای دفع اشیا
حتی خیلی از برنامه نویسان حرفه ای سی شارپ نمیدانند که کلمه کلیدی یوزینگ تنها برای وارد کردن کتابخانه ها به کار نمیرود بلکه برای دفع اشیا نیز استفاده میشود. همانطور که میدانید هر شی پس از به وجود آمدن و انجام دستورات مورد نیاز باید از بین برود. میتوانید با دستور یوزینگ مطمین شوید شی مورد نظر از بین خواهد رفت. به کد زیر دقت کنید :
//the below code: using(SomeDisposableClass someDisposableObject = new SomeDisposableClass()) { someDisposableObject.DoTheJob(); } //does the same as: SomeDisposableClass someDisposableObject = new SomeDisposableClass(); try { someDisposableObject.DoTheJob(); } finally { someDisposableObject.Dispose(); }
۴. استفاده از foreach به جای for در همه موارد
همواره به یاد داشته باشید که اگر میخواهید در هر چیزی که مجموعه نیست ساختار تکرار ایجاد کنید به جز آرایه ها استفاده از فور بهینه تر از فور اچ است. همواره اکثر برنامه نویسان استفاده از foreach را ترجیح میدهند زیرا استفاده از آن آسان تر است. اما هنگامی که با حجم داده های عظیم رو به رو میشویم میتوان دریافت که استفاده از این ساختار تکرار میتواند هزینه بر باشد. به همین دلیل توصیه میشود از این ساختار بیشتر برای آرایه های با حجم کمتر استفاده شود و در بقیه موارد از ساختر for استفاده شود.
با اجرای نمونه کد زیر میتوانید متوجه اختلاف زمانی عملکرد این دو ساختار شوید:
public class NestedExceptionHandling { public void MainMethod() { try { //some implementation ChildMethod1(); } catch(Exception exception) { //Handle exception } } private void ChildMethod1() { //some implementation ChildMethod2(); } private void ChildMethod2() { //some implementation } }
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.