개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
클래스는 작고 단일 책임 원칙(SRP)를 따라야 한다. 따라서 클래스를 변경할 이유는 하나여야 한다.
클래스는 응집도가 높아야 한다. 응집도를 높게 유지하면 작은 클래스 여럿이 나온다.
인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리해야 한다.
TIL (Today I Learned) 날짜
2022. 03. 08
오늘 읽은 범위
10장.클래스
책에서 기억하고 싶은 내용을 써보세요.
클래스는 작아야 한다
단일 책임 원칙(SRP)를 따라야 한다. = 모듈을 변경할 이유가 하나 뿐이어야 한다.
문제는 우리들 대다수가 프로그램이 돌아가면 일이 끝났다고 여기는 데 있다. ‘깨끗하고 체계적인 소프트웨어’라는 다음 관심사로 전환하지 않는다.
큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다.
응집도
응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미.
응집도가 높아지도록 변수와 메서드를 적절히 분리해 새로운 클래스 두세 개로 쪼개준다.
변경이 쉬운 클래스
OCP : 클래스는 확장에 개방적이고 수정에 폐쇄적이어야 한
새 기능을 추가하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조가 바람직하다.
인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리해야 한다.
시스템 결합도를 최소로 줄이면 자연스럽게 DIP를 따르는 클래스가 나온다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
클래스의 크기가 작아야 한다는 의미를 단순히 코드양으로 생각하고 있었는데, 해당 장을 통해서 클래스의 크기가 작다는 기준은 갖고 있는 책임이 하나만 있어야하고 변경할 때 그 이유가 하나 뿐이어야 한다는 것을 알게 되었다.
OCP, SRP, DIP 모두 객체 지향 원칙 SOLID의 원칙들인데, 책에서 소개하는 코드들도 자바라 그런지 Spring 프레임워크의 구조가 많이 생각났고, 노드 진영에서의 프레임워크 중에서는 Nest.js가 해당 내용을 충실하게 지키면서 애플리케이션 개발을 할 수 있을꺼 같다는 생각을 했다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
오늘 읽은 다른사람의 TIL
roghabo님의 TIL (url 링크)