클린코드 TIL #10
📓 오늘 읽은 범위
- 10장 클래스
💡 책에서 기억하고 싶은 내용을 써보세요
- 클래스는 작아야 한다! (p. 172)
- 클래스를 만들 때 첫 번째 규칙은 크기다. 클래스는 작아야 한다. 두 번째 규칙도 크기다. 더 적아야 한다.
- 클래스의 크기는 맡은 책임을 센다.
- 클래스 이름은 해당 클래스 책임을 기술해야 한다. 실제로 작명은 클래스 크기를 줄이는 첫 번째 관문이다. 간결한 이름이 떠오르지 않는다면 필경 클래스 크기가 너무 커서 그렇다. 클래스 이름이 모호하다면 핑경 클래스 책임이 너무 많아서다. (p.175)
- 단일 책임 원칙(Single Responsibility Principle, SRP) (p.175)
- 단일 책임 원칙은 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다. SRP는 ‘책임'이라는 개념을 정의하여 적절한 클래스 크기를 제시한다. 클래스는 책임, 즉 변경할 이유가 하나여야 한다는 의미다.
- 큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다. (p.177)
- 응집도(p.177)
- 클래스는 인스턴스 변수 수가 작아야 한다.
- 응집도가 높아지도록 변수와 메서드를 적절히 분리해 새로운 클래스 두세 개로 쪼개준다.
- 경험에 의하면 클래스 일부에서만 사용되는 비공개 메서더는 코드를 개선할 잠재적인 여지를 시사한다. (p.186)
- 변경으로부터 격리 (p.189)
- 테스트가 가능할 정도로 시스템의 결합도를 낮추면 유연상과 재사용성도 더욱 높아진다. (p.190)
- 결합도를 최소로 줄이면 자연스럽게 또 다른 클래스 설계 원칙인 DIP(Dependency Inversion Principle)를 따르는 클래스가 나온다. (p.190)
📝 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.
- 우선 JavaScript를 쓰면서 클래스를 구현해 본적이 없었고, 파이썬을 배우면서도 클래스를 도대체 왜 쓰는지 항상 의문을 가졌다. 이번 10장 클래스를 읽으면서도 머리속에서 내내 왜 클래스를 써야할까 라는 생각이 먼저 들었다. 그렇게 때문에 다른 취준생분과 클래스에 대해 논의하는 시간을 가지며, 클린코드에 적힌 코드에 대한 설명을 부탁드렸다.
- 추상 클래스를 통해 추상 클래스를 상속받은 클래스는 오버라이드를 통해 동일한 메서드 명을 쓰되, 다른 로직을 구현할 수 있다는 것을 깨닫게 되었다. 그렇게 하면서 클래스를 조금은 이해하게 되었다.
- 그리고 클래스를 분리하는 것에 대해 이것이 장점일까 라고 생각했는데, 분리된 클래스를 이해하면서 정말로 깔끔하다는 인상을 받았다.
- 클린코드에서는 하나의 책임 SRP를 항상 강조해왔고, 클래스에서 그 의미가 더욱 두드러진것 같다. 클래스를 잘게 쪼갬으로써 OCP까지 용이한 구조가 되었다. 복잡한 로직을 구현하기보다는 잘게 쪼개어 영향을 최소화하는 방식으로 코드를 구성해보도록 노력해야곘다.
🔍 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
- OCP(Open-Closed Principle)
- 확장에 개방적이고 수정에 폐쇄적이야 한다는 원칙
반응형
'Culture > Book' 카테고리의 다른 글
IT 5분 잡학사전 #03 (0) | 2023.01.16 |
---|---|
IT 5분 잡학 사전 #02 (0) | 2023.01.16 |
클린코드 TIL #09 (0) | 2022.03.02 |
클린코드 TIL #08 (0) | 2022.03.01 |
클린코드 TIL #06 (0) | 2022.02.24 |
댓글