[Clean Code] 10장. 클래스

Rose·2024년 2월 12일

CleanCode

목록 보기
8/8
post-thumbnail

TIL(Today I Learned)


내용 3줄 정리 💁🏻‍♀️

  • 클래스는 크기가 작아야 한다.
  • 클래스의 크기를 측정하는 척도는 클래스가 맡은 책임이다. 클래스가 맡은 책임이 작아야 클래스 크기를 줄일 수 있다.
  • 클래스의 응집도가 높아지도록 구현하고, 시스템이 변경될 경우를 대비하여 구체적인 클래스와 추상 클래스로 구분하자. (상세한 구현에 의존X)

기억하고싶은 내용 📝

  • 클래스를 만들 때 첫 번째 규칙은 크기다. 클래스는 작아야 한다. (172p)
  • 클래스 이름은 해당 클래스 책임을 기술해야 한다. 실제로 작명은 클래스 크기를 줄이는 첫 번째 관문이다. (173p)

단일 책임 원칙

  • 단일 책임 원칙(Single Responsibility Principle, SRP)은 클래스나 모듈을 변경할 이유가 하나, 단 하나 뿐이어야 한다는 원칙이다. (175p)

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

응집도 Cohesion

응집도가 높은 클래스를 선호하는 이유는?
"응집도가 높다"는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미이기 때문이다. 응집도가 높아지도록 변수와 메서드를 적절히 분리해 새로운 클래스 두세 개로 쪼개주는 것이 좋다.

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

변경하기 쉬운 클래스

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

변경으로부터 격리

객체지향 프로그래밍에서 구체적인concrete 클래스는 상세한 구현(코드)을 포함하며 추상abstract 클래스는 개념만 포함한다.

  • 상세한 구현에 의존하는 클라이언트 클래스는 구현이 바뀌면 위험에 빠진다. 그래서 우리는 인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리한다. (189p)

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


참고자료

  • Clean Code: Class (클린 코드 - 10장 클래스 관련 내용 요약)_by LUNA Y0UNG
  • profile
    신입 백엔드 개발자의 성장 기록

    0개의 댓글