Partial Classes: Büyük Sınıf Dosyalarını Parçalara Bölmek

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
C# dünyasında projeler büyüdükçe, bazı sınıflar binlerce satır koda ulaşabilir. Özellikle form tasarımları, veritabanı modelleri veya büyük iş mantığı sınıfları söz konusu olduğunda, aynı dosya içinde çalışmak tam bir kabusa dönüşebilir. İşte bu noktada Partial Classes (Kısmi Sınıflar) imdadımıza yetişir.

XenForo forum yapısına tam uyumlu, temiz kod prensiplerine dayalı Partial Class rehberimiz:

C# Partial Classes: Büyük Kod Dosyalarını Organize Etmenin En İyi Yolu​


C# dilinde partial anahtar kelimesi, tek bir sınıfın (class), yapının (struct) veya arayüzün (interface) tanımını birden fazla dosyaya yaymanıza olanak tanır. Derleme zamanında bu dosyalar birleştirilir ve tek bir bütün sınıf gibi davranır.



1. Neden Partial Class Kullanmalıyız?​


Partial sınıflar sadece "dosya kalabalığını" önlemek için değil, aynı zamanda iş akışını yönetmek için kullanılır:


  • []Geliştirici İşbirliği: Aynı sınıf üzerinde çalışan iki farklı yazılımcı, farklı dosyalar (dosya1.cs, dosya2.cs) üzerinden çakışma (conflict) yaşamadan çalışabilir.
    []Otomatik Üretilen Kodlar: Visual Studio'nun (örneğin WinForms veya Entity Framework) otomatik ürettiği kodlar ile sizin yazdığınız kodları ayırır. Böylece araç kodu güncellediğinde sizin yazdıklarınız silinmez.
  • Okunabilirlik: Bir sınıfın veritabanı işlemlerini bir dosyada, iş mantığını (logic) başka bir dosyada tutarak karmaşıklığı azaltabilirsiniz.



2. Partial Class Nasıl Tanımlanır?​


Kullanımı oldukça basittir; sınıf tanımının başına partial eklemeniz yeterlidir. Ancak dikkat: Sınıf isimleri, namespace'leri ve erişim belirleyicileri aynı olmalıdır.

Dosya 1: PersonelVeritabani.cs
C#:
public partial class Personel
{
public int Id { get; set; }
public string Ad { get; set; }

public void Kaydet() 
{
    Console.WriteLine("Veritabanına kaydedildi.");
}

}

Dosya 2: PersonelHesaplama.cs
C#:
public partial class Personel
{
public decimal Maas { get; set; }

public void MaasHesapla() 
{
    Console.WriteLine($"{Ad} için maaş hesaplandı.");
}

}



3. Partial Methods (Kısmi Metotlar)​


Partial sınıfların içinde Partial Metotlar da tanımlanabilir. Bu özellik, bir dosyada metodun imzasını (tanımını) oluşturup, diğer dosyada bu metodun gövdesini (işlevini) yazmanıza olanak tanır. Eğer metodun gövdesi yazılmazsa, derleyici o metodu ve ona yapılan tüm çağrıları görmezden gelir.

C#:
// Dosya 1
partial void OnConfiguring(); // Tanım

// Dosya 2
partial void OnConfiguring()
{
Console.WriteLine("Yapılandırma tamamlandı."); // Gövde
}



4. Bilmeniz Gereken Kurallar ve Kısıtlamalar​


Partial yapılarla çalışırken şu noktalara dikkat etmelisiniz:


  • []Aynı Assembly: Tüm parçalar aynı projenin (assembly) içinde olmalıdır.
    []Kalıtım: Eğer parçalardan biri bir sınıftan miras alıyorsa (inheritance), tüm parçalar o sınıftan miras alıyor demektir.
    []Sealed/Abstract: Eğer bir parça abstract veya sealed olarak işaretlenirse, sınıfın tamamı öyle kabul edilir.
    []Arayüzler: Farklı parçalar farklı arayüzleri (interface) uygulayabilir; derleme sonunda sınıf bunların tamamını uygulamış olur.

ÖzellikDurum
Erişim BelirleyicisiTüm parçalarda aynı olmalı (public, internal vb.)
NamespaceKesinlikle aynı olmalı.
Generic TiplerParametre isimleri tüm parçalarda eşleşmeli.



Sonuç​


Partial sınıflar, "Temiz Kod" yazmak ve büyük projeleri yönetilebilir parçalara bölmek için harika bir araçtır. Özellikle büyük sınıfların sorumluluklarını fiziksel dosyalara bölerek, projenin bakım maliyetini düşürebilirsiniz. Ancak unutmayın; sınıfınız çok fazla parçaya bölünüyorsa, belki de o sınıfı birden fazla bağımsız sınıfa bölme (Single Responsibility Principle) vaktiniz gelmiştir.
 
Geri
Üst