Swift

Swift) 단일 책임의 원칙

나태한개발 2024. 6. 7. 20:15

오늘은 계산기 만들기 과제를 하다가 과제 요구사항에

단일 책임의 원칙을 지켜 코드를 작성해 보라는 것이 있어서 조금 정리를 해볼까 한다.

단일 책임 원칙(SRP)이란?

단일 책임 원칙은 객체 지향 설계의 SOLID 원칙 중 첫 번째 원칙이다. 이 원칙은 클래스가 하나의 책임만 가지도록 함으로써 코드의 복잡성을 줄이고, 유지보수를 쉽게 만들 수 있다.

잘못된 예제부터 봅시다.

class UserManager {
    func addUser(name: String) {
        // 사용자 추가 로직
    }

    func removeUser(name: String) {
        // 사용자 제거 로직
    }

    func printUserDetails(name: String) {
        // 사용자 세부 정보 출력 로직
    }
}

위의 UserManager 클래스는 사용자 추가, 제거, 정보 출력의 세 가지 책임을 가지고 있다.

이는 단일 책임 원칙을 위반한 예다.

 

다음은 올바른 예제이다.

class UserManager {
    func addUser(name: String) {
        // 사용자 추가 로직
    }

    func removeUser(name: String) {
        // 사용자 제거 로직
    }
}

class UserPrinter {
    func printUserDetails(name: String) {
        // 사용자 세부 정보 출력 로직
    }
}

위의 예제에서는 UserManager 클래스는 사용자 추가와 제거에 대한 책임만 가지며, UserPrinter 클래스는 사용자 정보를 출력하는 책임만 가진다. 이렇게 클래스를 분리함으로써 각각의 클래스가 단일 책임 원칙을 준수하게 된다.

 

SRP를 준수함으로써 얻을 수 있는 장점

  1. 코드의 가독성 향상: 클래스가 명확한 역할을 가지므로 코드를 이해하기 쉬워진다.
  2. 유지보수성 향상: 변경 사항이 있을 때, 영향을 받는 클래스만 수정하면 되므로 수정 범위가 줄어든다.
  3. 재사용성 증가: 역할이 명확히 분리된 클래스는 다른 프로젝트나 다른 모듈에서 쉽게 재사용할 수 있다.