개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
클래스는 하나의 책임만 (SRP)
클래스는 인스턴스 변수 수가 작아야 한다.
변경하기 쉽게 클래스를 만들자
TIL (Today I Learned) 날짜
2022. 05. 11
오늘 읽은 범위
10장. 클래스
책에서 기억하고 싶은 내용을 써보세요.
클래스 체계
캡슐화
캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. (p.172)
클래스는 작아야 한다!
함수는 물리적인 행 수로 크기를 측정했다. 클래스는 다른 척도를 사용한다. 클래스가 맡은 책임을 센다. (p.173)
클래스 이름은 해당 클래스 책임을 기술해야 한다. (p.175)
단일 책임 원칙 (SRP)
클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다. (p. 175)
응집도 (Cohesion)
클래스는 인스턴스 변수 수가 작아야 한다. (p.177)
일반적으로 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 더 높다 (p.177)
응집도를 유지하면 작은 클래스 여럿이 나온다
클래스가 응집력을 잃는다면 쪼개라! (p.179)
변경하기 쉬운 클래스
이상적인 시스템이라면 새 기능을 추가할 때 시스템을 확장할 뿐 기존 코드를 변경하지는 않는다. (p.188)
변경으로부터 격리
위와 같은 테스트가 가능할 정도로 시스템의 결합도를 낮추면 유연성과 재사용성도 더욱 높아진다. (p.190)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
이번장 내용에 클래스 설계 원칙인 SOLID의 몇가지 원칙들이 나와서 찾아보았다.
SRP(Single Responsibility Principle): 단일 책임 원칙
OCP(Open Closed Priciple): 개방 폐쇄 원칙
LSP(Listov Substitution Priciple): 리스코프 치환 원칙
ISP(Interface Segregation Principle): 인터페이스 분리 원칙
DIP(Dependency Inversion Principle): 의존 역전 원칙
SRP와 OCP는 클린코드 10장 내용으로도 이해가 잘되었는데, 다른 원칙들 (LSP, ISP, DIP)는 아직 생소하다. 개념을 숙지하고 좀 더 많은 예제를 보면서 익혀야 겠다.
과거 안드로이드 앱 개발을 할때 하나의 클래스에 여러 책임을 하도록 엄청 큰 클래스로 구현했던 것이 떠올라서 부끄러웠다. 지금 생각하면 그 클래스는 최소 5개 이상 클래스로 쪼갤수 있었을 것 같다. SRP를 숙지하고 다음부터 클래스 설계 및 구현할때는 하나의 책임을 담당하는 클래스로 잘 쪼개서 깨끗한 코드를 작성해야겠다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
SOLID의 다른 원칙들 궁금해서 찾아봄
오늘 읽은 다른사람의 TIL
None