SRP
SRP란?
- Single Responsibility Principle
- 단일 책임 원칙
SRP의 특징
- 하나의 클래스는 하나의 책임만 가져야한다.
- 하나의 클래스는 클 수도 있고, 작을 수도 있다.
- 문맥과 상황에 따라서 다르게 작용할 수 있다.
SRP의 장점
- 변경이 있을 때 하나만 고치면 된다.
- 한 책임의 변경으로부터 다른 책임의 변경으로의 연쇄 작용이 가능하다.
- 유지보수가 용이해짐
- 설계 윈리들을 적용하는 기초가 된다.
SRP의 단점
- 코드의 길이가 길어진다.
- 클래스가 많아질 수 있다.
SRP 위반 사례
- Massive View Controller
SRP의 단점의 반박
- 코드가 길어지더라도 여러개의 클래스를 사용하는 것이 유지보수에 더 용의 하다.
- 문제점
- 너무 많은 역활을 하고 있는 뷰커트롤러를 쪼개서 단일 책임만을 가지고 있는 여러 클래스를 만들려고하는 것
SRP 원칙을 생활의 예제로 설명해줘!
- 쉽게 생각해서 당신이 고데기를 사용해서 머리를 필려고 하는데 고데기에 막 물도 나오고 머리 자르는 기능 불을 뿜는 기능이 있다고 하면 쓸 떄 없는 기능이 많으니까 고데기에는 머리를 피는 기능 이런 식으로 분리하는 것이 좋습니다.
SRP 그래서 어떻게 지키는데?
- 10~200 방법
- 함수는 10줄이내
- 함수는 하나만 작업을 해야한다
- 추상레벨 정하기
- 클래스는 200줄이내
- 프로퍼티나 함수, 메서드를 그냥 손이 가는 곳 아무데나 만들어서 쓸 수 없다
- 이곳에 이 코드가 있어야하는 이유를 다시한번 생각해보기
- 함수나 메소드, 내부 self를 얼마나 쓰고 있는지 생각해보기
- 만약 하나도 쓰고 있지 않다면 그 클래스에 있을 이유가 없음
- self의 호출빈도가 적다면 클래스와 연관성이 떨어졌다는 것이다.
- 클래스 다이어트시 우선적으로 내쫒을 후보가 된다.
- 프로퍼티나 함수, 메서드를 그냥 손이 가는 곳 아무데나 만들어서 쓸 수 없다
- 함수는 10줄이내
추상 레벨이란? 얼만큼의 정보를 해당함수에 노출시킬 것인가