SOLID - Single Responsibility - Tek Sorumluluk Prensibi

Solid Prensipleri'nin S ilkesi olan Single Responsibility - Tek Sorumluk Prensibi

                                         

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