TIL (Today I Learned)
2022.03.08
오늘 읽은 범위
10장 클래스
책에서 기억하고 싶은 내용을 써보세요.
- 클래스는 작아야 한다! -> 간결한 이름이 떠오르지 않는다면 클래스 필경 클래스 크기가 너무 커서 그렇다 (p.172)
- 단일 책임 원칙(Single Responsibility Principle, SRP) -> 클래스나 모듈을 변경할 이유는 하나뿐이어야 한다 (p.175)
- 응집도(Cohesion) (p.177)
클래스는 인스턴스 변수 수가 작아야 한다. 각 클래스 메서드는 클래스 인스턴스 변수를 하나 이상 사용해야 한다.
일반적으로 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 높다. 응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미이기에, 우리는 응집도가 높은 클래스를 선호한다. - 함수를 작게, 매개변수 목록을 짧게라는 전략을 따르다 보면 때때로 몇몇 메서드만이 사용하는 인스턴스 변수가
많아지는데, 이는 새로운 클래스로 쪼개야 한다는 신호이다. 응집도가 높아지도록 변수와 메서드를 적절히 분리해 새로운 클래스 두세 개로 쪼개도록 하자 (p.178) - 개방-폐쇄 원칙(Open-Closed Principle, OCP) -> 클래스는 확장에 개방적이고 수정에 폐쇄적이어야 한다 (p.188)
- 의존관계 역전 원칙(Dependency Inversion Principle, DIP) -> 클래스는 상세한 구현이 아니라 추상화에 의존해야 한다
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
이번 10장은 응집도 관련된 내용을 제일 재미있게 읽었던 것 같다. 변수, 메서드, 클래스의 응집도를 생각하면서
클래스를 구현해본 적도 없었고, 변수와 메서드의 응집도를 높일수록 클래스가 작게 쪼개질 수밖에 없겠구나라는
생각이 들었기 때문이다. 이 책을 읽으면 읽을수록 학습한 내용들을 바탕으로 코드를 짜고 싶다는 생각이 계속 든다.
스프링 공부를 좀 더 빠르게 해서 프로젝트를 진행해봐야겠다.