Optimize - Một số cách tối ưu code và performance CSharp
Nguồn: viblo.asia
Mở đầu
Trong bài viết này, chúng ta sẽ tìm hiểu một số mẹo và thủ thuật C# hữu ích về cách cải thiện chất lượng và hiệu suất khi viết code.
Đầu tiên, chúng ta sẽ tìm hiểu cách cải thiện chất lượng code của mình bằng một số mẹo liên quan đến khả năng đọc và giảm reducing nesting code.
Sau đó, chúng ta sẽ thấy một số lưu ý khi nói đến việc xử lý ngoại lệ mà chúng ta cần lưu ý. Khi code chúng ta rất hay bắt gặp các trường hợp
Guarding against null values: Kiểm tra các giá trị null
If-else statements: Lệnh if-else
Exception handling: Bắt exception
Cách kiểm tra null
Khá chắc rằng trong bất kỳ dự án lớn nhỏ nào chúng ta đều có đoạn check null. Nếu object return null thì exception NullReferenceException được throw. Bình thường chúng ta sẽ viết
var product = GetProduct();
if (product == null)
{
// Do something if the object is null.
}
Một cách check null khá hay và hiệu với is và is not quả ở C#
var product = GetProduct();
if (product is not null)
{
// Do something if the object is not null.
}
Ví dụ chúng ta có một đoạn switch check xem hôm nay có phải ngày cuối tuần hay không.
switch (DateTime.Now.DayOfWeek)
{
case DayOfWeek.Monday:
return "Not Weekend";
case DayOfWeek.Tuesday:
return "Not Weekend";
case DayOfWeek.Wednesday:
return "Not Weekend";
case DayOfWeek.Thursday:
return "Not Weekend";
case DayOfWeek.Friday:
return "Not Weekend";
case DayOfWeek.Saturday:
return "Weekend";
case DayOfWeek.Sunday:
return "Weekend";
default:
throw new ArgumentOutOfRangeException();
}
Hoàn toàn có thể viết ngắn gọn lại
switch (DateTime.Now.DayOfWeek)
{
case DayOfWeek.Monday:
case DayOfWeek.Tuesday:
case DayOfWeek.Wednesday:
case DayOfWeek.Thursday:
case DayOfWeek.Friday:
return "Not Weekend";
case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
return "Weekend";
default:
throw new ArgumentOutOfRangeException();
}
DateTime.Now.DayOfWeek switch
{
DayOfWeek.Monday or DayOfWeek.Tuesday or DayOfWeek.Wednesday or DayOfWeek.Thursday or DayOfWeek.Friday => "Not Weekend",
DayOfWeek.Saturday or DayOfWeek.Sunday => "Weekend",
_ => throw new ArgumentOutOfRangeException()
}
dùng not trong C#
DateTime.Now.DayOfWeek switch
{
not (DayOfWeek.Saturday or DayOfWeek.Sunday) => "Not Weekend",
DayOfWeek.Saturday or DayOfWeek.Sunday => "Weekend",
_ => throw new ArgumentOutOfRangeException()
}
Cách tối hơn khi filter exception
Ví dụ chúng ta có một đoạn filter exception 400 bad request với 404 not found
Ở đây mình tổng hợp một số trick thường được dùng hoặc là mình hay dùng để tối ưu code. Cho dòng code ngắn gọn dễ hiểu và performance tốt hơn trong C#.