[Clean Code] TIL (2022.03.09) 10장. 클래스

다시보려고 쓰기·2022년 3월 9일
0

클린코드 (Clean Code)

목록 보기
10/10
post-thumbnail

TIL

🔖 오늘 읽은 범위 : 10장. 클래스



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

클래스 체계

<가장 앞----------------------------------------------------------------------------------------------------------------|
변수 목록 (static, public 상수 > private 변수 > 비공개 인스턴스 변수 ) > 공개함수 > 비공개함수 > 추상화 단계

캡슐화

변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시 숨겨야한다. 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. (p.172)


클래스는 작아야 한다.

클래스는 작아야 한다. 클래스 이름은 해당 클래스 책임을 기술해야 한다.


단일 책임의 원칙 (Single Responsibility Principle : SRP)

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

책임, 즉 변경할 이유를 파악하려 애쓰다 보면 코드를 추상화하기도 쉬워진다.

복잡성을 다루려면 체계적인 정리가 필수다. 큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다. 작은 클래스는 각자 맡은 책임이 하나며, 변경할 이유가 하나며, 다른 작은 클래스와 협력해 시스템에 필요한 동작을 수행한다. (p.177)


응집도 (Cohension)

클래스는 인스턴스 변수 수가 작아야한다. 각 클래스 메서드는 클래스 인스턴스 변수를 하나 이상 사용해야한다. 일반적으로 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 더 높다. 모든 인스턴스 변수를 메서드마다 사용하는 클래스는 응집도가 가장 높다.

응집도가 높다는 말은 클래스가 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미다.
(p.177)
응집도가 높아지도록 변수와 메서드를 적절히 분리해 새로운 클래스 두 세개로 쪼개준다. (p.178)


응집도를 유지하면 작을 클래스 여럿이 나온다.

큰 함수를 작은 함수 여럿으로 나누기만 해도 클래스 수가 많아진다. 클래스가 응집력을 잃는다면 쪼개라! 큰 함수를 작은 함수 여럿으로 쪼개다보면 종종 작은 클래스 여럿으로 쪼갤 기회가 생긴다. 그러면서 프로그램에 점점 더 체계가 잡히고 구조가 투명해진다. (p.179)


변경하기 쉬운 클래스

깨끗한 시스템은 클래스를 체계적으로 정리해 변경에 수반하는 위험을 낮춘다. (p.185)

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


변경으로부터 격리

인터페이스와 추상클래스를 사용해 구현이 미치는 영향을 격리한다. (p.189)

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


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

정처기 공부할 때 외운 응집도와 결합도의 중요성을 구체적인 설명과 예시를 통해 이렇게 다시 한번 알아갑니다.


🔎 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

0개의 댓글