Solid Prensipleri'nin S ilkesi olan Single Responsibility - Tek Sorumluk Prensibi
Prensibe uymayan kod aşağıdaki gibidir.
MailSender sınıfı
Bu prensip, oluşturduğumuz her bir sınıfın sorumlu olduğu
tek bir görevi, işlevi olmalıdır. Farklı bir görev tanımlayacaksak ayrı bir sınıf oluşturmamız gerekir.
Bu prensibe uymadığımızda kodumuz büyüyor, ve sınıfı
kontrol etmemiz zorlaşıyor. Bu prensibi daha anlaşılır kılacak bir örnek yapalım.
Bir sistem geliştirirken kullanıcı işlemlerini User adında bir sınıfta tutuyoruz. Bu sınıfta kullanıcı kaydı, giriş ve mail gönderme işlemlerini yapan metotlar tek bir sınıfta toplanmış. Bu kodlar prensibe aykırıdır. User sınıfına bir metot daha eklesek kod büyüyecek, ve işleri ayırt edebilmek zorlaşacaktır.
Prensibe uymayan kod aşağıdaki gibidir.
public class User { public string MailAddress{ get; set; } private string FirstName { get; set; } private string LastName { get; set; } private string PhoneNumber { get; set; } private DateTime BirthDate { get; set; } private string Adress { get; set; } public string Password { get; set; }public static string Register() { return "Kayıt Başarılı"; }public static string Login(string mail, string pass) { if (mail == "mrt@hotmail.com" && pass == "1234") { return "Giriş Başarılı"; } else { return "Hatalı giriş yaptınız!!!";public static string SendMail() { return "Mail Gönderildi"; } }
} }
Kodlarımızı prensibimize uygun yeniden düzenleyelim.
Kullanıcıların kayıt işlemi yapmasını ve sisteme giriş yapmasından sorumlu User sınıfı ve üyelerin mail gönderme işleminden sorumlu MailSender sınıfı tasarlayalım.
MailSender sınıfı
public static class MailSender { public static void SendMail() { return "Mail Gönderildi"; } }User sınıfı
public class User { public string MailAddress { get; set; } private string FirstName { get; set; } private string LastName { get; set; } private string PhoneNumber { get; set; } private DateTime BirthDate { get; set; } private string Adress { get; set; } public string Password { get; set; } public static string Register() { return "Kayıt Başarılı"; } public static string Login(string mail, string pass) { if (mail == "mrt@hotmail.com" && pass == "1234") { return "Giriş Başarılı"; } else { return "Hatalı giriş yaptınız!!!";
} } } }
Bu prensibe uyarak işleri ayrıştırmış olduk. Kullanıcı işlemleri ile mail işlemleri ayrı sınıflarda çalışacak. Böylece bir hata oluştuğunda ilgili işe ait sınıfta hatayı çözümleyebiliriz. Ayrıca reusable - yeniden kullanılabilir kod tasarladık.
Yorumlar
Yorum Gönder