오르막길

[CleanCode] 17~18일차 - 10장 TIL 본문

학습 기록하기/클린코드 챌린지

[CleanCode] 17~18일차 - 10장 TIL

nanalyee 2024. 9. 9. 22:51
10장
클래스

 

책에서 기억하고 싶은 내용
  • 클래스의 체계
    • 변수 순서: 정적 공개 상수 - 정적 비공개 변수 - 비공개 인스턴스 변수
    • 공개 변수가 필요한 경우는 거의 없다
    • 변수 이후 공개 함수 - 비공개 함수(자신 호출하는 공개함수 직후)의 추상화 단계가 순차적으로 내려간다
    • 테스트 코드가 함수 호출이나 변수 사용이 필요한 경우 protected로 선언하거나 패키지 전체로 공개한다.
    • 하지만 비공개 상태를 유지하는 것이 최우선
  • 클래스는 작아야 한다.
    • 클래스 설명은 if, and, or, but을 사용하지 않고 25단어 내외여야 한다
    • SRP(단일 책임 원칙): 클래스나 모듈을 변경할 이유가 하나여야 한다.
    • 돌아가는 소프트웨어에 초점을 맞추다 보니 수많은 책임을 떠안은 클래스가 생긴다.
    • 작은 클래스는 각자 맡은 책임이 하나, 변경할 이유가 하나며, 다른 작은 클래스와 협력해 동작을 수행한다.
    • 응집도: 모든 인스턴스 변수를 메서드마다 사용하는 클래스는 응집도가 가장 높다.
    • 응집도를 유지하면 작은 클래스 여럿이 나온다
    • 큰 함수 일부를 작은 함수 하난로 빼고 싶은데, 정의된 변수 넷을 사용한다면? 인수로 넘길까?
      NO! 네 변수를 클래스 인스턴스 변수로 승격한다
  • 변경하기 쉬운 클래스
    • SRP를 지원한다.
    • OCP를 지원한다. (확장에 개방적이고 수정에 폐쇄적)
    • 새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조
    • 시스템 결합도를 낮추면 유연성과 재사용성도 높아진다.
    • 결합도가 낮다는 것은 각 시스템 요소가 다른 요소로부터 그리고 변경으로부터 잘 격리되어있다는 것이다.
오늘 읽은 소감

여러 내용이 복합적으로 정리하는 기분도 들고 사실 항상 비슷한 얘기를 한 것 같기도 하고.
이번 내용엔 여러 예시 코드들이 있었는데 확실히 처음 읽을 때 보다 무슨 이야기를 하고 싶은지 잘 이해되는 느낌이었다.

궁금하거나 더 공부해야할 내용

없음