Ana içeriğe geç

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;