Skip to main content

SRP

SRP란?

  • Single Responsibility Principle
  • 단일 책임 원칙

SRP의 특징

  • 하나의 클래스는 하나의 책임만 가져야한다.
    • 하나의 클래스는 클 수도 있고, 작을 수도 있다.
    • 문맥과 상황에 따라서 다르게 작용할 수 있다.

SRP의 장점

  • 변경이 있을 때 하나만 고치면 된다.
    • 한 책임의 변경으로부터 다른 책임의 변경으로의 연쇄 작용이 가능하다.
  • 유지보수가 용이해짐
  • 설계 윈리들을 적용하는 기초가 된다.

SRP의 단점

  • 코드의 길이가 길어진다.
  • 클래스가 많아질 수 있다.

SRP 위반 사례

  • Massive View Controller

SRP의 단점의 반박

  • 코드가 길어지더라도 여러개의 클래스를 사용하는 것이 유지보수에 더 용의 하다.
  • 문제점
    • 너무 많은 역활을 하고 있는 뷰커트롤러를 쪼개서 단일 책임만을 가지고 있는 여러 클래스를 만들려고하는 것

SRP 원칙을 생활의 예제로 설명해줘!

  • 쉽게 생각해서 당신이 고데기를 사용해서 머리를 필려고 하는데 고데기에 막 물도 나오고 머리 자르는 기능 불을 뿜는 기능이 있다고 하면 쓸 떄 없는 기능이 많으니까 고데기에는 머리를 피는 기능 이런 식으로 분리하는 것이 좋습니다.

SRP 그래서 어떻게 지키는데?

  • 10~200 방법
    • 함수는 10줄이내
      • 함수는 하나만 작업을 해야한다
      • 추상레벨 정하기
    • 클래스는 200줄이내
      • 프로퍼티나 함수, 메서드를 그냥 손이 가는 곳 아무데나 만들어서 쓸 수 없다
        • 이곳에 이 코드가 있어야하는 이유를 다시한번 생각해보기
      • 함수나 메소드, 내부 self를 얼마나 쓰고 있는지 생각해보기
        • 만약 하나도 쓰고 있지 않다면 그 클래스에 있을 이유가 없음
      • self의 호출빈도가 적다면 클래스와 연관성이 떨어졌다는 것이다.
        • 클래스 다이어트시 우선적으로 내쫒을 후보가 된다.

추상 레벨이란? 얼만큼의 정보를 해당함수에 노출시킬 것인가