📂 نظم و ترتیب در #C: همه چیز درباره namespace (از روش کلاسیک تا 10 #C)
وقتی پروژههاتون بزرگ میشه و تعداد کلاسها زیاد میشه، چطور ازش یه آش شلهقلمکار نسازیم؟ ابزار اصلی #C برای سازماندهی و جلوگیری از تداخل اسمی، namespace هست.
این namespace مثل یه سیستم پوشهبندیه (folders) برای کدهاتون. شما میتونید کلاسهای مرتبط رو تو یه namespace بذارید تا هم پیداکردنشون راحتتر باشه و هم اگه دو تا کلاس با اسم یکسان تو دو تا پوشه مختلف داشتید، با هم قاطی نشن.
1️⃣ روش کلاسیک تعریف namespace
در روش سنتی، شما یک بلوک namespace تعریف میکنید و کلاسهاتون رو داخلش قرار میدید. برای ایجاد ساختار تودرتو، میتونید از نقطه استفاده کنید.
// روش تودرتو با استفاده از نقطه (روش پیشنهادی)
namespace MyProject.Services.Authentication
{
class AuthService { }
class TokenService { }
}
// این کد معادل کد بالاست ولی باعث تو رفتگی (indentation) بیشتر میشه
namespace MyProject
{
namespace Services
{
namespace Authentication
{
class AuthService { }
class TokenService { }
}
}
}
برای استفاده از یک کلاس، باید اسم کاملش رو به همراه namespace وارد کنید، مگر اینکه اون namespace رو بالای فایل using کرده باشید.
2️⃣ روش مدرن (از 10 #C): File-Scoped Namespaces ✨
تیم #C دید که معمولاً تمام کلاسهای یه فایل، تو یه namespace مشترک هستن. پس از 10 #C به بعد، یه راه خیلی تمیزتر معرفی کردن که کل فایل رو داخل یه namespace قرار میده و از یه لایه تو رفتگی اضافی جلوگیری میکنه.
قبل از 10 #C:
namespace MyNamespace
{
class Class1
{
// Code...
}
class Class2
{
// Code...
}
}
از 10 #C به بعد:
namespace MyNamespace; // این برای کل فایل اعمال میشه و تمام!
class Class1
{
// Code...
}
class Class2
{
// Code...
}
این قابلیت، کد شما رو خیلی تمیزتر و خلاصهتر میکنه.
🤔 حرف حساب و تجربه شما
استفاده درست از namespaceها، اولین قدم برای نوشتن یه پروژه بزرگه که قابل نگهداری باشه.
شما تو پروژههاتون چقدر روی ساختار namespaceها وقت میذارید؟ از قابلیت جدید File-Scoped Namespaces استفاده میکنید؟
خب، اینجا که نمیشه همه حرفا رو زد! 😉
ادامهی بحث، سوالات، غر زدنها و گپ و گفتهای خودمونی، فقط تو گروه.
[C# Geeks Hangout]
🔖 هشتگها:
#CSharp #Programming #Developer #DotNet #CleanCode #BestPractices #Namespace