Community

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

← Go back
[TIL] 10장. 클래스
by xgro
#clean_code
2년 전
758

📌 오늘 TIL 3줄 요약

  • 코드의 표현력과 그 코드로 이루어진 함수에 아무리 신경 쓸지라도 좀 더 차원 높은 단계까지 신경 쓰지 않으면 깨끗한 코드를 얻기는 어렵다.

  • 클래스는 작아야 한다.

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

📌 TIL (Today I Learned) 날짜

2022. 05. 10

📌 오늘 읽은 범위

10장. 클래스

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

  • 코드의 표현력과 그 코드로 이루어진 함수에 아무리 신경 쓸지라도 좀 더 차원 높은 단계까지 신경 쓰지 않으면 깨끗한 코드를 얻기는 어렵다.

  • 클래스 체계

    • 캡슐화

      • 변수와 유틸리티 함수는 가능한 고개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없다.

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

  • 클래스는 작아야 한다.

    • 클래스를 만들 때 첫 번째 규칙은 크기다. 클래스는 작아야 한다. 두 번째 규칙도 크기다. 더 작아야 한다.

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

    • 간결한 이름이 떠오르지 않는 다면 필경 클래스 크기가 너무 커서 그렇다.

    • 클래스 이름이 모호하다면 필경 클래스 책임이 너무 많아서다.

    • 클래스 설명은 if, and, or, but을 사용하지 않고서 25단어 내외로 가능해야 한다.

  • 단일 책임 원칙

    • 단일 책임 원칙 SRP는 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다.

    • SRP는 '책임'이라는 개념을 정의하며 적절한 클래스 크기를 제시한다.

    • 규모가 어느 수준에 이르는 시스템은 논리가 많고도 복잡하다. 이런 복잡성을 다루려면 체계적인 정리가 필수다.

  • 응집도

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

    • 응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미기 때문이다.

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

      • 큰 함수를 작은 함수 여럿으로 나누기만 해도 클래스 수가 많아진다.

      • 예를들어 변수가 아주 많은 큰 함수에서, 만약 네 변수를 클래스 인스턴스 변수로 승격한다면, 새함수는 인수가 필요없다.

      • 불행히도 이렇게 하면 클래스가 응집력을 잃는다.

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

  • 변경하기 쉬운 클래스

    • 대다수 시스템은 지속적인 변경이 가해진다.

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

    • 변경으로부터 격리

      • 요구사항은 변하기 마련이다. 따라서 코드도 변하기 마련이다.

      • 객체 지향 프로그래밍 입문에서 우리는 구체적인 클래스와 추상 클래스가 있다고 배웠다.

      • 인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리한다.

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

  • 클래스를 잘 설계하면 코드의 가독성을 크게 늘릴 수 있다.

  • 대다수 시스템은 지속적인 변경이 가해지지만, 클래슬를 체계적으로 정리하면 변경에 수반하는 위험을 낮출 수 있다.

  • 단순히 프로그램이 길어졌다고 해서 틀린 것은 아니다.

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

📌 오늘 읽은 다른사람의 TIL