SOLID: Single Responsibility Principle (SRP)
Tek Sorumluluk Prensibi
Single Responsibility Principle (SRP), SOLID prensiplerinin ilkidir ve her sınıfın yalnızca bir tek sorumluluğa sahip olması gerektiğini belirtir. Başka bir deyişle, bir sınıf yalnızca bir neden ile değişmelidir.
Önemi
SRP, kodun okunabilirliğini ve bakımını artırır. Bir sınıf tek sorumluluğa sahip olduğunda, sınıfı anlamak, test etmek ve değiştirmek daha kolay olur. Bu durum, yazılımın esnekliğini ve sürdürülebilirliğini artırır.
İyi Uygulamalar
- Tek Sorumluluk: Bir sınıf, yalnızca bir işlevi yerine getirmelidir. Farklı işlevler için ayrı sınıflar oluşturulmalıdır.
- Kapsamı Belirleme: Sınıfların kapsamı net bir şekilde belirlenmeli ve gereksiz sorumluluklardan kaçınılmalıdır.
- Bağımlılıkların Azaltılması: Sınıflar arası bağımlılıkları en aza indirerek, bir sınıfta yapılan değişikliklerin diğer sınıfları etkilemesini önleyin.
Örnek
// Kötü Örnek
public class User
{
public string Name { get; set; }
public string Email { get; set; }
public void ValidateEmail()
{
// E-posta doğrulama işlemleri
}
public void SaveUser()
{
// Kullanıcıyı veritabanına kaydetme işlemleri
}
public void SendEmail()
{
// Kullanıcıya e-posta gönderme işlemleri
}
}
// İyi Örnek
public class User
{
public string Name { get; set; }
public string Email { get; set; }
}
public class UserService
{
public void ValidateEmail(User user)
{
// E-posta doğrulama işlemleri
}
public void SaveUser(User user)
{
// Kullanıcıyı veritabanına kaydetme işlemleri
}
public void SendEmail(User user)
{
// Kullanıcıya e-posta gönderme işlemleri
}
}
Clean Code kitabında, Robert C. Martin, SRP‘yi şu şekilde açıklar: “Bir sınıfın değişmesi için yalnızca bir nedeni olmalıdır.” Bu prensip, yazılımın modüler ve esnek olmasını sağlar. Martin, örneklerle, bir sınıfın farklı sorumlulukları tek başına üstlenmesinin neden sorunlu olduğunu gösterir. Her sorumluluk, sınıfı daha karmaşık ve bakımını zor hale getirir. Sorumlulukları ayırmak, kodun test edilebilirliğini ve anlaşılabilirliğini artırır.