Community

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

← Go back
[TIL / Clean Code] 10장. 클래스
#clean_code
2년 전
711

오늘 TIL 3줄 요약

  • 클래스는 작아야 한다! 클래스가 응집력을 잃는다면 쪼개라!

  • 클래스는 변경할 이유가 하나여야 한다.

  • 깨끗한 시스템은 클래스를 체계적으로 정리해 변경에 수반하는 위험을 낮춘다. 변경하기 쉽도록 만들어야 한다.

TIL (Today I Learned) 날짜

2022.03.08 ~ 2022.03.09

오늘 읽은 범위

10장. 클래스

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

  • 클래스는 작아야 한다!

    • 클래스가 맡은 책임을 센다.(173p)

    • 클래스 이름에 Processor, Manager, Super 등과 같이 모호한 단어가 있으면 클래스에다 여러 책임을 떠안겼다는 증거다.(175p)

    • 클래스 설명은 만일("if"), 그리고("and"), -(하)며("or"), 하지만("but")을 사용하지 않고서 25단어 내외로 가능해야 한다.(175p)

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

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

      • 책임, 즉 변경할 이유를 파악하려 애쓰다 보면 코드를 추상화하기도 쉬워진다.(176p)

      • 큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다. 작은 클래스는 각자 맡은 책임이 하나며, 변경할 이유가 하나며, 다른 작은 클래스와 협력해 시스템에 필요한 동작을 수행한다.(177p)

    • 응집도(Cohesion)

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

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

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

  • 변경하기 쉬운 클래스

    • 깨끗한 시스템은 클래스를 체계적으로 정리해 변경에 수반하는 위험을 낮춘다.(185p)

    • 새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조가 바람직하다. 이상적인 시스템이라면 새 기능을 추가할 때 시스템을 확장할 뿐 기존 코드를 변경하지는 않는다.(188p)

      • 변경으로부터 격리

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

 

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

  • 자바를 주 언어로 쓰는 사람으로써 이 책을 진작에 읽었더라면,, 더 확실한 클래스를 작성할 수 있었을까 라는 생각이 들었으며, 앞으로는 클래스를 작성하기 전에 이 챕터를 생각해보고 작성해야겠다는 다짐을 하게 되었다.
    확실한것은 많이 보고 연습해보며 익혀야야 한다는 점을 지난 챕터부터 뼈저리게 느끼는 중이다. 바쁘고 지친다는 핑계로 소홀히 하지 않고 더 배워갈 수 있도록 행동해야겠다.

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

오늘 읽은 다른사람의 TIL