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);