İçeriğe geç

Single Responsibility Principle nedir ?

Merhabalar bu yazımda yazılım prensiplerinden Single Responsibility Principle (Tek Sorumluluk Prensibi) hakkında bilgi vereceğim.

SOLID” olarak adlandırılan prensiplerin içerisinde ilk sıradadır.

  • Single responsibility principle
  • Open-closed principle
  • Liskov substitution principle
  • Interface segregation principle
  • Dependency inversion principle

İlerleyen yazılarımda tüm bu prensiplerinden bahsedeceğim.

Tek sorumluluk prensibi adındanda anlaşılacağı gibi her sınıfın, methodun tek bir görevi üstlenmesi üzerine tasarlanmış bir prensiptir. Genel olarak bu prensipler kodun daha okunaklı, temiz, düzenli, modüler yapıda oluşması ve bizden sonra kod üzerinde değişiklik yapacak yazılımcılar için kolaylık sağlaması ve projenin zaman maliyetini en minimal hale getirmesi için tasarlanmışlardır.

Bu prensipde yazdığımız sınıf kesinlikle farklı eylemler içermemelidir. Aşağıda yazdığım örneği inceleyebilirsiniz.

import Foundation

struct UserModel {
    var nick: String
    var password: String
}

class User {
    
    private var user:UserModel?
    
    init(nick: String, password: String) {
        self.user = UserModel(nick: nick, password: password)
    }
    
    func register() -> Bool {
        return true
    }
    
    func login() -> Bool {
        return true
    }
}

class UserLogger {
    
    func registerLog() {
        print("add register log...")
    }
    
    func loginLog() {
        print("add login log...")
    }
}

Bu örnekte User sınıfımız sadece User ile ilgili işlemleri içermektedir. Aksi halde bu prensibe ters düşer. User sınıfı gördüğünüz gibi register, login vs işlemleri yapmakta. Bu sınıfa loglama eklememiz hata olur. Bu yüzden farklı bir sınıf yaratarak o işlemleri o sınıf üzerinde yönetmemiz gerekli. Bu sayede sınıflar bir birinden ayrılmış, bir birinden bağımsız şekilde kontrol edilebilirler. Bundan önceki yazımda Dependency Injection prensibinden bahsetmiştim. Bu prensipde gevşek bağımlılık kullanmaktaydı. Bu gevşek bağımlılık yapısıda bu prensip ile uyuşmaktadır.

Tabiki bu prensiplerin her biri her projeye uyacak diye bir durum söz konusu değildir. Projenizin büyüklüğü, yazmakta olduğunuz projenin çalışma yapısı ve modelide doğrudan hangi prensibi kullanmanız gerektiğini belirleyen unsurlardır.

 

Tarih:Design Principles

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca