Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 10장. 클래스
#clean_code
2년 전
2,200

오늘 TIL 3줄 요약

  • 클래스는 하나의 책임만 (SRP)

  • 클래스는 인스턴스 변수 수가 작아야 한다.

  • 변경하기 쉽게 클래스를 만들자

TIL (Today I Learned) 날짜

2022. 05. 11

오늘 읽은 범위

10장. 클래스

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

  • 클래스 체계

    • 캡슐화

      • 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. (p.172)

  • 클래스는 작아야 한다!

    • 함수는 물리적인 행 수로 크기를 측정했다. 클래스는 다른 척도를 사용한다. 클래스가 맡은 책임을 센다. (p.173)

    • 클래스 이름은 해당 클래스 책임을 기술해야 한다. (p.175)

    • 단일 책임 원칙 (SRP)

      • 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다. (p. 175)

    • 응집도 (Cohesion)

      • 클래스는 인스턴스 변수 수가 작아야 한다. (p.177)

      • 일반적으로 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 더 높다 (p.177)

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

      • 클래스가 응집력을 잃는다면 쪼개라! (p.179)

  • 변경하기 쉬운 클래스

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

    • 변경으로부터 격리

      • 위와 같은 테스트가 가능할 정도로 시스템의 결합도를 낮추면 유연성과 재사용성도 더욱 높아진다. (p.190)

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

  • 이번장 내용에 클래스 설계 원칙인 SOLID의 몇가지 원칙들이 나와서 찾아보았다.

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

    • OCP(Open Closed Priciple): 개방 폐쇄 원칙

    • LSP(Listov Substitution Priciple): 리스코프 치환 원칙

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

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

  • SRP와 OCP는 클린코드 10장 내용으로도 이해가 잘되었는데, 다른 원칙들 (LSP, ISP, DIP)는 아직 생소하다. 개념을 숙지하고 좀 더 많은 예제를 보면서 익혀야 겠다.

  • 과거 안드로이드 앱 개발을 할때 하나의 클래스에 여러 책임을 하도록 엄청 큰 클래스로 구현했던 것이 떠올라서 부끄러웠다. 지금 생각하면 그 클래스는 최소 5개 이상 클래스로 쪼갤수 있었을 것 같다. SRP를 숙지하고 다음부터 클래스 설계 및 구현할때는 하나의 책임을 담당하는 클래스로 잘 쪼개서 깨끗한 코드를 작성해야겠다.

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

  • SOLID의 다른 원칙들 궁금해서 찾아봄

오늘 읽은 다른사람의 TIL

  • None