본문 바로가기
독서/노개북

[노개북 #8] 클린 코드 TIL_DAY 20

by 포푸리 (POPOOLY) 2022. 5. 11.
반응형

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


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

 

• 클래스를 만들 때 첫 번째 규칙은 크기다. 클래스는 작아야 한다. 두 번째 규칙도 크기다. 더 작아야 한다. (p.172)

 클래스 이름은 해당 클래스 책임을 기술해야 한다. 실제로 작명은 클래스 크기를 줄이는 첫 번째 관문이다. 간결한 이름이 떠오르지 않는다면 필경 클래스 크기가 너무 커서 그렇다. 클래스 이름이 모호하다면 필경 클래스 책임이 너무 많아서다. (p.175)

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

• '함수를 작게, 매개변수 목록을 짧게'라는 전략을 따르다 보면 때때로 몇몇 메서드만이 사용하는 인스턴스 변수가 아주 많아진다. 이는 십중팔구 새로운 클래스로 쪼개야 한다는 신호다. 응집도가 높아지도록 변수와 메서드를 적절히 분리해 새로운 클래스 두세 개로 쪼개준다. (p.178)

 대다수 시스템은 지속적인 변경이 가해진다. 그리고 변경할 때마다 시스템이 의도대로 동작하지 않을 위험이 따른다. 깨끗한 시스템은 클래스를 체계적으로 정리해 변경에 수반하는 위험을 낮춘다. (p.185)

 OCP(Open-Closed Principle)란 클래스는 확장에 개방적이고 수정에 폐쇄적이어야 한다는 원칙이다... 새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조가 바람직하다. 이상적인 시스템이라면 새 기능을 추가할 때 시스템을 확장할 뿐 기존 코드를 변경하지는 않는다. (p.188)

결합도가 낮다는 소리는 각 시스템 요소가 다른 요소로부터 그리고 변경으로부터 잘 격리되어 있다는 의미다. 시스템 요소가 서로 잘 격리되어 있으면 각 요소를 이해하기도 더 쉬워진다. 이렇게 결합도를 최소로 줄이면 자연스럽게 또 다른 클래스 설계 원칙인 DIP(Dependency Inversion Principle)를 따르는 클래스가 나온다. 본질적으로 DIP는 클래스가 상세한 구현이 아니라 추상화에 의존해야 한다는 원칙이다. (p.190)

 

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

 

코딩에서 모든 구성 요소는 최대한 작게 만들어야 한다. 함수는 짧게!! 클래스는 작게!! 그래야 코드가 명확해진다. 그리고 서로 영향을 미치지 않는다.

 

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

 

• 객체지향 설계 5원칙 SOLID (SRP, OCP, LSP, ISP, DIP)

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

  - OCP(Open Closed Principle): 개방 폐쇄 워칙

  - LSP(Liskov Substitution Principle): 리스코프 치환 원칙

  - ISP(Interface Segregation Principle): 인터페이스 분리 원칙

  - DIP(Dependency Inversion Principle): 의존 역전 원칙

 

객체지향 설계 5원칙 SOLID (SRP, OCP, LSP, ISP, DIP)

참조문서 http://www.nextree.co.kr/p6960/ http://slenderankle.tistory.com/162 1. SOLID란? 객체지향 설계는 긴 세월과 수많은 시행착오를 거치며 5가지 원칙이 정리되었다. 이것은 객체지향 설계의 5원칙이라..

sjh836.tistory.com

 

댓글