[클린 코드] TIL(Today I Learned) DAY 16~17

soleil_lucy·2024년 2월 12일
0

TIL (2024.02.12)

DAY 16~17

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

Summary

  • 클래스는 작아야 한다
  • 응집도는 높이고! 결합도는 낮추고!
  • 객체 지향 설계 핵심 원칙: SRP, OCP, DIP

책에서 기억하고 싶은 내용

10장 클래스

클래스는 작아야 한다! (p. 172)

  • 클래스를 만들 때 첫 번째 규칙도, 두 번째 규칙도 클래스는 작아야 한다 이다.
  • 클래스는 얼마나 작아야 하는가?
    • 클래스가 맡은 책임을 기준으로 작게 만든다

단일 책임 원칙 (p. 175)

  • 단일 책임 원칙, Single Responsibility Principle, SRP
    • 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙
    • 클래스는 책임, 즉 변경할 이유가 하나여야 한다는 의미

응집도 (p. 177)

  • 클래스는 인스턴스 변수 수가 작아야 한다
  • 응집도가 높다?
    • 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미
    • 응집도가 높은 클래스를 선호하는 편

변경하기 쉬운 클래스 (p. 185)

  • 깨끗한 시스템은 클래스를 체계적으로 정리해 변경에 수반하는 위험을 낮춘다
  • 객체 지향 설계 핵심 원칙
    • OCP, Open-Closed Principle, 개방 폐쇄 원칙
      • 클래스는 확장에 개방적이고 수정에 폐쇄적이어야 한다는 원칙
      • 새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조가 바람직하다

변경으로부터 격리 (p. 189)

  • 결합도가 낮다?
    • 각 시스템 요소가 다른 요소로부터 그리고 변경으로부터 잘 격리되어 있다는 의미
  • DIP, Dependency Inversion Principle, 의존성 역전 원칙
    • 클래스가 상세한 구현이 아니라 추상화에 의존해야 한다는 원칙

오늘 읽은 소감

책을 읽으면서 SRP, OCP, DIP 같은 원칙들을 많이 들어봤지만 코드를 짤 때 그 원칙들을 녹여내는게 참 어렵다는 생각이 들었다. 그 원칙들을 녹여내기 위해서는 많은 연습이 필요할 것 같다. 아직은 어떻게 적용해야 할지 감이 잡히지 않는다. 이론적으로만 이해가 된 상태이다.

몰랐던 용어

  • 인스턴스 변수?
    클래스에 정의된 변수로 인스턴스가 생성될 때 생성되는 변수
    멤버 변수라고도 불림
  • SRP, Single Responsibility Principle
    클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙
  • OCP, Open-Closed Principle
    클래스는 확장에 개방적이고 수정에 폐쇄적이어야 한다는 원칙
  • DIP, Dependency Inversion Principle
    클래스가 상세한 구현이 아니라 추상화에 의존해야 한다는 원칙
profile
여행과 책을 좋아하는 개발자입니다.

0개의 댓글