ابزار قدرتمند یا کدنویسی شلخته؟
کلمه کلیدی var یکی از مدرنترین و در عین حال بحثبرانگیزترین قابلیتهای #C هست. بعضیها عاشقشن و بعضیها ازش فراریان.
اما var دقیقاً چیه؟ آیا #C رو مثل جاوااسکریپت، داینامیک میکنه؟ بیاید یک بار برای همیشه، این ابزار قدرتمند رو کالبدشکافی کنیم.
1️⃣حالا var چیست؟ استنتاج نوع در زمان کامپایل 🤖
این var یه کلمه کلیدی برای راحتی کاره. وقتی از var استفاده میکنید، به کامپایلر میگید:
"من نوع این متغیر محلی رو نمینویسم. خودت از روی عبارتی که دارم بهش اختصاص میدم، نوعش رو استنتاج (Infer) کن."
// کامپایلر میفهمه که x از نوع string هست
var x = "hello";
// کامپایلر میفهمه که y از نوع StringBuilder هست
var y = new System.Text.StringBuilder();
// کامپایلر میفهمه که z از نوع float هست
var z = (float)Math.PI;
این کدها دقیقاً معادل این هستن که شما خودتون نوع رو به صورت صریح بنویسید.
2️⃣مهمترین نکته: var داینامیک نیست! (Statically Typed) 🛡
این بزرگترین تصور اشتباه در مورد var هست. استفاده از var به هیچ وجه #C رو به یه زبان داینامیک تبدیل نمیکنه.
نوع متغیری که با var تعریف میشه، در زمان کامپایل مشخص و قفل میشه و دیگه هرگز قابل تغییر نیست. var فقط برای خلاصهنویسیه.
// اینجا کامپایلر نوع x رو int تشخیص میده و این نوع برای همیشه ثابت میمونه
var x = 5;
// ❌ خطای زمان کامپایل!
// شما نمیتونید یه رشته رو تو یه متغیر از نوع int بریزید.
x = "hello";
3️⃣تله خوانایی: کی نباید از var استفاده کنیم؟ 🧐
با اینکه var کد رو کوتاهتر میکنه، گاهی وقتا میتونه خوانایی کد رو کم کنه. قانون کلی اینه: اگه با یه نگاه به سمت راست مساوی، نتونستید نوع متغیر رو به راحتی تشخیص بدید، بهتره از var استفاده نکنید.
// اینجا x از چه نوعیه؟ int? long?
// برای فهمیدنش باید بریم و متد Next رو چک کنیم.
// این کد خوانایی خوبی نداره.
var x = new Random().Next();
// نوشتن صریح، اینجا خیلی بهتر و خواناتره:
int x = new Random().Next();
🤔 حرف حساب و استایل شما
کلمه کلیدی var یه ابزار عالی برای خلاصهنویسی و تمیزتر کردن کده، به شرطی که هوشمندانه ازش استفاده بشه و خوانایی رو فدای کوتاهی نکنیم.
نکته: سناریوهایی هم وجود داره (مثل کار با Anonymous Types) که استفاده از var در اونها اجباریه و بعداً بهشون میرسیم.
شما از طرفدارای var هستید یا مخالفش؟ به نظرتون کجاها استفاده از var کد رو بهتر میکنه و کجاها بدتر؟
خب، اینجا که نمیشه همه حرفا رو زد! 😉
ادامهی بحث، سوالات، غر زدنها و گپ و گفتهای خودمونی، فقط تو گروه.
[پاتوق گیک های #C]
🔖 هشتگها:
#CSharp
#CodingTips #CleanCode #Var