چند نکته C# برای کد تمیزتر و خواناتر

اصلاح و بهبود کدی که قبلاً نوشته شده، خیلی دشوار است؛ به‌خصوص وقتی فرد دیگری روی آن کار کرده باشد. در ادامه چند نکته‌ی C# آورده شده که کد شما را زیباتر و خواناتر می‌کند

📩 با عضویت در خبرنامه، جدیدترین مطالب و آموزش‌ها را مستقیم در ایمیل خود دریافت کنید.

خبرنامه

Conditional Operator ?:

عملگر شرطی (?:) یک روش سریع و ساده برای نوشتن دستورات if-else ارائه می‌دهد:

condition ? first_expression : second_expression;

یعنی اگر شرط درست بود، عبارت اول برگردانده می‌شود و اگر نادرست بود، عبارت دوم. در مثال زیر، یک دستور if-else داریم که با عملگر شرطی بهینه شده است:

قبل از بهینه‌سازی:

int number = 6;
string message = string.Empty;
if (number > 5)
{
message = $"{number} is greater than 5!";
}
else
{
message = $"{number} is equal to or less than 5!";
}
Console.WriteLine(message);

بعد از بهینه‌سازی:

int number = 6;
string message = string.Empty;
message = number > 5
? $"{number} is greater than 5!"
: $"{number} is equal to or less than 5!";
Console.WriteLine(message);

StringBuilder برای متون طولانی

اگر موقعیتی دارید که باید رشته‌های زیادی را به هم اضافه کنید، به‌خصوص اگر بزرگ باشند، از StringBuilder به‌جای String استفاده کنید. String یک نوع تغییرناپذیر (immutable) است؛ یعنی هر بار که مقدار آن را تغییر می‌دهید، یک شیء جدید از نوع String ایجاد می‌شود. به همین دلیل، اگر این کار چندین بار تکرار شود، برنامه‌ی شما بسیار کند خواهد شد.

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append(text);

استفاده از Tuples

توسعه‌دهندگانی را دیده‌ام که فقط برای بازگرداندن چند مقدار از یک متد، یک کلاس POCO جداگانه ساخته‌اند. تاپل‌ها (Tuples) از دات‌نت فریم‌ورک ۴.۰ معرفی شده‌اند و می‌توانند به‌طور مؤثر مانند کد زیر استفاده شوند:

public Tuple<int, string, string> GetEmployee()
{
    int employeeId = 1001;
    string firstName = "Rudy";
    string lastName = "Koertson";

    // Create a tuple and return
    return Tuple.Create(employeeId, firstName, lastName);
}

تاپل نام‌دار در C# جدید

مثال بالا از System.Tuple استفاده می‌کند. در C# 7 به بعد، می‌توانید از syntax تاپل نام‌دار و ValueTuple استفاده کنید. برای قراردادهای عمومی و داده‌های دارای رفتار یا اعتبارسنجی، همچنان کلاس یا record می‌تواند انتخاب مناسب‌تری باشد.

static (int Id, string FirstName, string LastName) GetEmployee()
{
    return (1001, "Rudy", "Koertson");
}

var employee = GetEmployee();
Console.WriteLine(employee.FirstName);

برای استفاده از StringBuilder، namespace System.Text لازم است. StringBuilder برای ساخت مکرر متن می‌تواند مفید باشد، اما برای هر الحاق ساده الزاماً انتخاب سریع‌تری نیست؛ بهینه‌سازی را با اندازه‌گیری انجام دهید.

بروزرسانی‌های خبرنامه

آدرس رایانامه‌ی خود را در زیر وارد کنید و مشترک خبرنامه‌ی ما شوید.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *