Takip et

Yazılımda SRP (Tek Sorumluluk Prensibi): Daha İyi Kod İçin Temel Bir Prensip

Yazılımda SRP (Tek Sorumluluk Prensibi): Daha İyi Kod İçin Temel Bir Prensip

Merhaba! Fatih Soysal olarak, bugün size yazılım dünyasında oldukça önemli bir prensip olan SRP (Single Responsibility Principle) yani Tek Sorumluluk Prensibinden bahsedeceğim. Bu prensip, daha temiz, daha anlaşılır ve daha sürdürülebilir kod yazmanın temel taşlarından biridir. Öncelikle, SRP’nin ne olduğunu daha net bir şekilde açıklayalım.

SRP, basitçe ifade edersek, her sınıfın veya modülün sadece bir sorumluluğu olması gerektiğini belirtir. Bu sorumluluk, tek bir değişime neden olacak şekilde tanımlanmalıdır. Yani, bir sınıfın birden fazla nedeni değiştirilmesini gerektiriyorsa, muhtemelen SRP’ye uymuyor demektir. Bu durum, kodunuzun karmaşıklığını artırır ve bakımını zorlaştırır. Örneğin, bir kullanıcı hesabı yöneten bir sınıf aynı zamanda ödeme işlemlerini de yönetiyorsa, bu durum SRP’yi ihlal eder.

Peki, neden SRP’ye uymalıyız? İşte bazı önemli nedenler:

  • Daha Okunabilir ve Anlaşılır Kod: Her sınıfın tek bir görevi olduğunda, kodunuzu anlamak ve üzerinde çalışmak çok daha kolay olur. Karmaşıklık azalır ve kod daha temiz görünür.
  • Daha Az Hata: Bir sınıfın tek bir görevi olduğunda, hata olasılığı azalır. Çünkü değişikliklerin etkisi daha sınırlıdır ve olası yan etkiler daha kolay tespit edilebilir.
  • Daha Kolay Bakım ve Güncelleme: Kodunuzun belirli bölümlerini değiştirmeniz gerektiğinde, SRP’ye uygun bir şekilde yazılmış kod, bu işlemi çok daha kolay hale getirir. Değişikliklerin istenmeyen yan etkilerine daha az rastlarsınız.
  • Daha Yüksek Yeniden Kullanılabilirlik: Tek bir sorumluluğa sahip sınıflar, başka projelerde veya uygulamalarda daha kolay yeniden kullanılabilir.

Şimdi, bir örnekle konuyu daha somutlaştıralım. Diyelim ki bir kullanıcı kayıt sistemi tasarlıyoruz. SRP’ye uymayan bir yaklaşım şu şekilde olabilir:


class User {
constructor(name, email, password) {
this.name = name;
this.email = email;
this.password = password;
}

register() {
// Kayıt işlemleri
}

sendWelcomeEmail() {
// Hoşgeldin emaili gönderme
}

saveToDatabase() {
// Veritabanına kaydetme
}
}

Bu sınıfta, kullanıcı kaydı, e-posta gönderme ve veritabanına kaydetme gibi birden fazla sorumluluk bir arada bulunmaktadır. Bu durum, SRP’yi ihlal eder. Daha iyi bir yaklaşım, bu görevleri farklı sınıflara ayırmaktır:


class User {
constructor(name, email, password) {
this.name = name;
this.email = email;
this.password = password;
}
}

class UserRegistration {
register(user) {
// Kayıt işlemleri
}
}

class EmailService {
sendWelcomeEmail(user) {
// Hoşgeldin emaili gönderme
}
}

class DatabaseService {
saveUser(user) {
// Veritabanına kaydetme
}
}

Bu şekilde, her sınıfın tek bir sorumluluğu vardır ve kodumuz daha temiz, anlaşılır ve bakımı daha kolay hale gelir. Bu örnek, SRP’nin pratikte nasıl uygulanabileceğini göstermektedir. Elbette, karmaşık sistemlerde SRP’yi uygulamak daha zorlayıcı olabilir ancak sisteminizin karmaşıklığını azaltmak için büyük faydalar sağlayacaktır.

Sonuç olarak, SRP yazılım geliştirme sürecinde göz ardı edilmemesi gereken önemli bir prensiptir. Bu prensibi uygulamak, daha iyi, daha sürdürülebilir ve daha az hata içeren kodlar yazmanıza yardımcı olacaktır. Daha fazla bilgi için bu İngilizce makaleye göz atabilirsiniz. Kendi deneyimlerimi ve daha fazla bilgiyi web sitemde bulabilirsiniz.

#Etiketler: SRP, Tek Sorumluluk Prensibi, SOLID, Yazılım Tasarımı, Yazılım Mimarisi, Temiz Kod, Fatih Soysal, Kod Kalitesi, Sınıf Tasarımı, Modülerlik


Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.