개발자 99% 커뮤니티에서 수다 떨어요!
📌 오늘 TIL 3줄 요약
코드의 표현력과 그 코드로 이루어진 함수에 아무리 신경 쓸지라도 좀 더 차원 높은 단계까지 신경 쓰지 않으면 깨끗한 코드를 얻기는 어렵다.
클래스는 작아야 한다.
깨끗한 시스템은 클래스를 체계적으로 정리해 변경에 수반하는 위험을 낮춘다.
📌 TIL (Today I Learned) 날짜
2022. 05. 10
📌 오늘 읽은 범위
10장. 클래스
📌 책에서 기억하고 싶은 내용을 써보세요.
코드의 표현력과 그 코드로 이루어진 함수에 아무리 신경 쓸지라도 좀 더 차원 높은 단계까지 신경 쓰지 않으면 깨끗한 코드를 얻기는 어렵다.
클래스 체계
캡슐화
변수와 유틸리티 함수는 가능한 고개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없다.
캡슐화를 풀어주는 결정은 언제나 최후의 수단이다.
클래스는 작아야 한다.
클래스를 만들 때 첫 번째 규칙은 크기다. 클래스는 작아야 한다. 두 번째 규칙도 크기다. 더 작아야 한다.
클래스 이름은 해당 클래스 책임을 기술해야 한다.
간결한 이름이 떠오르지 않는 다면 필경 클래스 크기가 너무 커서 그렇다.
클래스 이름이 모호하다면 필경 클래스 책임이 너무 많아서다.
클래스 설명은 if, and, or, but을 사용하지 않고서 25단어 내외로 가능해야 한다.
단일 책임 원칙
단일 책임 원칙 SRP는 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다.
SRP는 '책임'이라는 개념을 정의하며 적절한 클래스 크기를 제시한다.
규모가 어느 수준에 이르는 시스템은 논리가 많고도 복잡하다. 이런 복잡성을 다루려면 체계적인 정리가 필수다.
응집도
클래스는 인스턴스 변수 수가 작아야 한다.
응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미기 때문이다.
응집도를 유지하면 작은 클래스 여럿이 나온다.
큰 함수를 작은 함수 여럿으로 나누기만 해도 클래스 수가 많아진다.
예를들어 변수가 아주 많은 큰 함수에서, 만약 네 변수를 클래스 인스턴스 변수로 승격한다면, 새함수는 인수가 필요없다.
불행히도 이렇게 하면 클래스가 응집력을 잃는다.
클래스가 응집력을 잃는다면 쪼개라!
변경하기 쉬운 클래스
대다수 시스템은 지속적인 변경이 가해진다.
깨끗한 시스템은 클래스를 체계적으로 정리해 변경에 수반하는 위험을 낮춘다.
변경으로부터 격리
요구사항은 변하기 마련이다. 따라서 코드도 변하기 마련이다.
객체 지향 프로그래밍 입문에서 우리는 구체적인 클래스와 추상 클래스가 있다고 배웠다.
인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리한다.
📌 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
클래스를 잘 설계하면 코드의 가독성을 크게 늘릴 수 있다.
대다수 시스템은 지속적인 변경이 가해지지만, 클래슬를 체계적으로 정리하면 변경에 수반하는 위험을 낮출 수 있다.
단순히 프로그램이 길어졌다고 해서 틀린 것은 아니다.
📌 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
📌 오늘 읽은 다른사람의 TIL
jooyoung님의 TIL (url 링크)