Ana içeriğe geç

Record Types

C# dilinde Record Types, immutable veri modelleri ve değer tabanlı eşitlik karşılaştırmaları oluşturmak için kullanılan modern bir yapıdır. Yanlış kullanım durumları Record Type’ların avantajlarını azaltabilir.


1. Record’ları Immutable Yapıda Tutmamak

Yanlış Kullanım: Record’ların alanlarını değiştirilebilir (mutable) yapmak.

public record Person
{
    public string Name { get; set; } // Değiştirilebilir
}

İdeal Kullanım: Record’ları immutable yapıda tutarak veri bütünlüğünü sağlayın.

public record Person(string Name);

2. Eşitlik Karşılaştırmalarını Yanlış Yapılandırmak

Yanlış Kullanım: Eşitlik karşılaştırmaları için class kullanmak.

public class Person
{
    public string Name { get; set; }
}

// Reference eşitliği kontrol edilir
var p1 = new Person { Name = "Murat" };
var p2 = new Person { Name = "Murat" };
Console.WriteLine(p1 == p2); // False

İdeal Kullanım: Record Type kullanarak değer tabanlı eşitliği etkinleştirin.

public record Person(string Name);

var p1 = new Person("Murat");
var p2 = new Person("Murat");
Console.WriteLine(p1 == p2); // True

3. with Anahtar Kelimesini Yanlış Kullanmak

Yanlış Kullanım: with ifadesini kullanmadan veri değiştirmeye çalışmak.

var person = new Person("Murat");
person.Name = "Derin"; // Derleme hatası

İdeal Kullanım: with anahtar kelimesini kullanarak yeni bir Record örneği oluşturun.

var person = new Person("Murat");
var updatedPerson = person with { Name = "Derin" };

4. Veri Modeli İçin Yanlış Yapı Seçimi

Yanlış Kullanım: Record Type yerine class veya struct kullanmak.

public class Address
{
    public string City { get; set; }
}

İdeal Kullanım: Immutable ve değer tabanlı eşitlik gerektiren durumlar için Record Type kullanın.

public record Address(string City);

5. Record’ların Performans Özelliklerini Göz Ardı Etmek

Yanlış Kullanım: Büyük veri yapıları için Record Type kullanmak.

public record LargeRecord(string Data); // Performans sorunlarına neden olabilir

İdeal Kullanım: Büyük veri yapıları için class kullanmayı değerlendirin.

public class LargeRecord
{
    public string Data { get; set; }
}

6. Record’ları Yanlış Kapsamda Kullanmak

Yanlış Kullanım: Record Type’ları DTO (Data Transfer Object) dışında kullanmak.

public record Repository(string Name); // Yanlış kullanım, record yerine class kullanılmalı

İdeal Kullanım: Record Type’ları DTO ve veri modelleri için kullanın.

public record PersonDto(string Name, int Age);