클린코드 챌린지 Day 16, 17

seul·2024년 2월 12일

개발자북클럽

목록 보기
10/11

📅 TIL (Today I Learned): 2024.02.12
📋 오늘 읽은 범위: 10. 클래스


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

클래스 체계

클래스를 정의하는 표준 자바 관례
1. 변수 목록
- 정적 공개 상수 (public static)
- 정적 비공개 (private static)
- 비공개 인스턴스 변수
2. 공개 함수
3. 비공개 함수는 자신을 호출하는 공개 함수 직후에

클래스는 작아야 한다.

얼마나 작아야 하는가? 클래스가 맡은 책임을 센다.

  • 클래스 이름은 해당 클래스 책임을 기술해야 한다.
  • 간결한 이름이 떠오르지 않는다면 필경 클래스 크기가 너무 커서 그렇다.
  • 클래스 이름이 모호하다면 클래스 책임이 너무 많아서다.

단일 책임 원칙, SRP

클래스나 모듈을 변경할 이유가 하나, 단 하나 뿐이어야 한다.

많은 개발자는 자잘한 단일 책임 클래스가 많아지면 큰 그림을 이해하기 어려워진다고 우려한다.
그러나 어느 시스템이든 익힐 내용은 그 양이 비슷하다.

-> 큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다.

응집도

일반적으로 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 더 높다.
응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미다.
때때로 몇몇 메서드만이 사용하는 인스턴스 변수가 아주 많아진다. -> 클래스로 쪼개야 한다는 신호

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

  1. 큰 함수에 변수가 많이 사용된다.
  2. 큰 함수를 작은 함수로 쪼갠다.
  3. 큰 함수에 사용되는 변수를 클래스 인스턴스 변수로 승격한다.
  4. 클래스의 응집도가 내려간다.
  5. 몇몇 함수만 사용하는 변수가 증가한다.
  6. 클래스를 분리한다.

변경하기 쉬운 클래스

이상적인 시스템이라면 새 기능을 추가할 때 시스템을 확장할 뿐 기존 코드를 변경하지는 않는다.

변경으로부터 격리

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


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

중간에 복잡한 코드를 리팩토링 하는 부분이 있었는데,
내가 그걸 과연 소화할 수 있을지 겁이 났다.


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

없음! 이 쯤 되면 공부 방법이 잘못된 게 아닌가 생각 중...

profile
자존감은 일상의 성실함으로부터 온다

0개의 댓글