🔖 오늘 읽은 범위 : 10장, 클래스 (p.170 ~ p.178)
😀 책에서 기억하고 싶은 내용
클래스 체계
정적 공개 상수 → 정적 비공개 변수 → 비공개 인스턴스 변수 → 공개 함수 → 비공개 함수
공개 변수가 필요한 경우는 거의 없다.
추상화 단계가 순차적으로 내려간다.
프로그램은 신문기사처럼 읽힌다.
캡슐화를 풀어주는 결정은 언제나 최후의 수단이다.
같은 패키지 안에서 테스트 코드가 함수를 호출하거나 변수를 사용해야 한다면 그 함수나 변수를 protected로 선언하거나 패키지 전체로 공개한다. 하지만 그 전에 비공개 상태를 유지할 온갖 방법을 강구한다.
클래스는 작아야 한다.
작명은 클래스 크기를 줄이는 첫 번째 관문이다.
간결한 이름이 떠오르지 않는다면 클래스 크기가 너무 큰 것이다.
클래스 이름이 모호하다면 클래스 책임이 너무 많은 것이다.
클래스 이름에 Processor, Manager, Super 등과 같이 모호한 단어가 있다면 클래스에다 여러 책임을 떠안겼다는 증거다.
클래스 설명은 ‘만일’, ‘그리고’, ‘하며’, ‘하지만’을 사용하지 않고서 25단어 내외로 가능해야 한다.
단일 책임 원칙Single Responsibility Principle, SRP
클래스나 모듈을 변경할 이유는 단 하나뿐이어야 한다.
도구 상자를 어떻게 관리하고 싶은가? 작은 서랍을 많이 두고 기능과 이름이 명확한 컴포넌트를 나눠 넣고 싶은가? 아니면 큰 서랍 몇 개를 두고 모두를 던져 넣고 싶은가?
작은 클래스는 각자 맡은 책임이 하나며, 변경할 이유가 하나며, 다른 작은 클래스와 협력해 시스템에 필요한 동작을 수행한다.
응집도
- 클래스는 인스턴스 변수 수가 작아야 한다.
- 일반적으로 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 더 높다.
- 때때로 몇몇 메서드만이 사용하는 인스턴스 변수가 아주 많아진다. 이는 십중팔구 새로운 클래스로 쪼개야 한다는 신호다.
🤔 오늘 읽은 소감은?
- 클래스에도 체계가 있다는 것을 처음 알았다.
- 객체지향 프로그래밍은 내부 변수를 숨기는 것을 중요시하는 것 같다.
- 그동안 모호한 이름을 많이 써서 반성했다.
- 서랍 비유가 굉장히 와닿았다.
🧐 궁금한 내용이 있거나, 잘 이해되지 않는 내용
- 인스턴스 변수 수를 줄여서 응집도를 높인다는 이야기가 이해가 잘 안됐다.
📌 소감 3줄 요약
- 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다.
- 클래스나 모듈을 변경할 이유는 단 하나뿐이어야 한다.
- 클래스는 인스턴스 변수 수가 작아야 한다.
'클린코드' 카테고리의 다른 글
| [DAY 17] 클린 코드 TIL - 10장. 클래스 (0) | 2022.02.10 |
|---|---|
| [DAY 15] 클린 코드 TIL - 9장. 단위 테스트 (0) | 2022.02.07 |
| [DAY 14] 클린 코드 TIL - 9장. 단위 테스트 (4) | 2022.02.06 |
| [DAY 13] 클린 코드 TIL - 7장. 오류 처리 (0) | 2022.02.04 |
| [DAY 12] 클린 코드 TIL - 7장. 오류 처리 (0) | 2022.02.02 |