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;