Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
10장. 클래스
#clean_code
2년 전
2,054

TIL (Today I Learned) 날짜

2022. 05. 11

오늘 읽은 범위

10장. 클래스

책에서 기억하고 싶은 내용을 써보세요.

- 클래스 이름은 해당 클래스 책임을 기술해야 한다. 실제로 작명은 클래스 크기를 줄이는 첫 번째 관문이다.

- 단일 책임 원칙(Single Responsibility Principle, SRP)은 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다. SRP는 '책임'이라는 개념을 정의하며 적절한 클래스 크기를 제시한다. 클래스는 책임, 즉 변경할 이유가 하나여야 한다는 의미다.

- 책임, 즉 변경할 이유를 파악하려 애쓰다 보면 코드를 추상화하기도 쉬워진다. 더 좋은 추상화가 더 쉽게 떠오른다.

- 큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다. 작은 클래스는 각자 맡은 책임이 하나며, 변경할 이유가 하나며, 다른 작은 클래스와 협력해 시스템에 필요한 동작을 수행한다.

- 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 더 높다. 모든 인스턴스 변수를 메서드마다 사용하는 클래스는 응집도가 가장 높다.

- 응집도(Cohesion)가 가장 높은 클래스는 가능하지도 바람직하지도 않다.

- 응집도가 높아지도록 변수와 메서드를 적절히 분리해 새로운 클래스 두세 개로 쪼개준다.

- 몇몇 함수가 몇몇 변수만 사용한다면 독자적인 클래스로 분리해도 되지 않는가? 당연하다. 클래스가 응집력을 잃는다면 쪼개라!

- 큰 함수를 작은 함수 여럿으로 쪼개다 보면 종종 작은 클래스 여럿으로 쪼갤 기회가 생긴다. 그러면서 프로그램에 점점 더 체계가 잡히고 구조가 투명 해진다.

- OCP(Open Closed Principle)란 클래스는 확장에 개방적이고 수정에 폐쇄적이어야 한다는 원칙이다.

- 새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조가 바람직하다. 이상적인 시스템이라면 새 기능을 추가할 때 시스템을 확장할 뿐 기존 코드를 변경하지는 않는다.

- 시스템의 결합도를 낮추면 유연성과 재사용성도 더욱 높아진다. 결합도가 낮다는 소리는 각 시스템 요소가 다른 요소로부터 그리고 변경으로부터 잘 격리되어 있다는 의미다. 시스템 요소가 서로 잘 격리되어 있으면 각 요소를 이해하기도 더 쉬워진다.

- DIP(Dependency Inversion Principle)는 클래스가 상세한 구현이 아니라 추상화에 의존해야 한다는 원칙이다.

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

- 클래스는 크고 모든 것을 담아야 한다고 생각했고 그렇게 코딩 해 왔었는데, 이번 챕터를 통해서 많은 것을 생각하고 반성 할 수 있는 시간이 되었다.

- 클래스는 하나의 책임을 가지고 있어야 바람직하며, 응집력을 최대한 높히고 결합도를 낮추도록 만들고 쪼개야 이해하기도 쉽고 체계가 잡히며 테스트도 용이 할 수 있다.

- 이번 챕터도 모든 걸 이해하지 못했지만, 앞으로 코딩 시 계속 되새기며 클래스 설계 및 작성에 참고해야 겠다.