Deconstruction¶
Deconstruction, bir nesnenin bileşenlerini parçalara ayırarak daha okunabilir ve düzenli kod yazmayı sağlar. Ancak, yanlış kullanım durumları kodun karmaşıklaşmasına ve hatalara yol açabilir.
1. Deconstruction Kullanımını İhmal Etmek¶
❌ Yanlış Kullanım: Deconstruction yerine manuel atamalar yapmak.
var point = GetPoint();
var x = point.X;
var y = point.Y;
Console.WriteLine($"X: {x}, Y: {y}");
✅ İdeal Kullanım: Deconstruction kullanarak daha kısa ve okunabilir kod yazın.
var (x, y) = GetPoint();
Console.WriteLine($"X: {x}, Y: {y}");
Metot Tanımı:
public (int X, int Y) GetPoint() => (10, 20);
2. Deconstruction İçin Anlamsız İsimler Kullanmak¶
❌ Yanlış Kullanım: Deconstruction’da anlamsız değişken isimleri kullanmak.
var (a, b) = GetDimensions();
Console.WriteLine($"Width: {a}, Height: {b}");
✅ İdeal Kullanım: Deconstruction sırasında anlamlı değişken isimleri kullanın.
var (width, height) = GetDimensions();
Console.WriteLine($"Width: {width}, Height: {height}");
Metot Tanımı:
public (int Width, int Height) GetDimensions() => (1920, 1080);
3. Fazla Karmaşık Yapılar Kullanmaya Çalışmak¶
❌ Yanlış Kullanım: Karmaşık türlerde deconstruction yapmaya çalışmak.
var data = GetComplexData();
var a = data.Item1;
var b = data.Item2.X;
var c = data.Item2.Y;
✅ İdeal Kullanım: Deconstruction ile daha düzenli bir yapı kullanın.
var (id, (x, y)) = GetComplexData();
Console.WriteLine($"ID: {id}, X: {x}, Y: {y}");
Metot Tanımı:
public (int ID, (int X, int Y) Coordinates) GetComplexData() => (1, (10, 20));
4. Gereksiz Deconstruction Yapmak¶
❌ Yanlış Kullanım: Basit işlemler için gereksiz deconstruction.
var (x, y) = (10, 20);
Console.WriteLine($"X: {x}, Y: {y}");
✅ İdeal Kullanım: Gereksiz deconstruction’dan kaçının.
var point = (10, 20);
Console.WriteLine($"X: {point.Item1}, Y: {point.Item2}");
5. Deconstruction ile Nullable Türleri Yanlış Yönetmek¶
❌ Yanlış Kullanım: Nullable türlerde null kontrolü yapmamak.
var (x, y) = GetNullablePoint(); // Hata riski
✅ İdeal Kullanım: Nullable türlerde güvenli deconstruction kullanın.
var point = GetNullablePoint();
if (point.HasValue)
{
var (x, y) = point.Value;
Console.WriteLine($"X: {x}, Y: {y}");
}
else
{
Console.WriteLine("Point is null.");
}
Metot Tanımı:
public (int X, int Y)? GetNullablePoint() => null;