✨ یک ترفند مدرن برای خداحافظی با تکرار: Target-Typed new
از نوشتن اسمهای طولانی مثل StringBuilder دو بار تو یه خط خسته شدی؟
StringBuilder sb = new System.Text.StringBuilder();
این تکرار، کد رو شلوغ و ناخوانا میکنه. #C از نسخه ۹ به بعد، یه راه حل خیلی شیک برای این مشکل داره:
Target-Typed new Expressions.
معرفی ()Target-Typed new 🎯
قانونش سادهست: اگه کامپایلر بتونه از روی "هدف" (Target) - یعنی متغیری که داری بهش مقدار میدی یا پارامتر متدی که داری بهش پاس میدی - نوع رو تشخیص بده، شما دیگه لازم نیست اسم نوع رو بعد از new تکرار کنی!
// روش قدیمی و تکراری
System.Text.StringBuilder sb1 = new System.Text.StringBuilder("Old way");
// روش مدرن و تمیز با Target-Typed new
System.Text.StringBuilder sb2 = new("New way"); // کامپایلر خودش میفهمه!
✨️این قابلیت دو جا قدرت اصلیش رو نشون میده:
1️⃣مقداردهی فیلدها در سازنده (Constructor):
وقتی یه فیلد رو تو کلاس تعریف میکنی و میخوای تو سازنده مقداردهی کنی:
class Foo
{
private System.Text.StringBuilder _sb;
public Foo(string initialValue)
{
// نیازی به تکرار اسم طولانی StringBuilder نیست
_sb = new(initialValue);
}
}
2️⃣پاس دادن آبجکت جدید به عنوان آرگومان متد:
// کد خیلی کوتاه و خوانا میشه
MyMethod(new("test"));
void MyMethod(System.Text.StringBuilder sb) { /* ... */ }
🤔 حرف حساب و تجربه شما
این یه قابلیت کوچیک ولی خیلی کاربردیه که به مرور، کد شما رو تمیزتر و مدرنتر میکنه و از تکرارهای بیمورد جلوگیری میکنه.
شما از این سینتکس جدید ()new استفاده میکنید؟ به نظرتون خوانایی کد رو بهتر میکنه یا ترجیح میدید همیشه نوع رو کامل بنویسید؟
خب، اینجا که نمیشه همه حرفا رو زد! 😉
ادامهی بحث، سوالات، غر زدنها و گپ و گفتهای خودمونی، فقط تو گروه.
[پاتوق گیک های #C]
🔖 هشتگها:
#CSharp #DotNet #ModernCSharp #CleanCode #CodingTips