Community

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

← Go back
TIL 10장(클래스)
#clean_code
2년 전
633

오늘 TIL 3줄 요약

  • 클래스는 작아야 한다.

  • 변수와 메서드를 적절히 분리해 여러 클래스로 나눔으로서 클래스의 응집도를 높여야 한다.

  • 클래스는 확장에 개방적이고 수정에 폐쇄적이어야 하며 결합도를 낮추어 각 요소가 다른 요소의 변경으로부터 격리되어 있어야 한다.

TIL (Today I Learned) 날짜

2022.03.08

오늘 읽은 범위

10장.클래스

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

  • 클래스 체계

  1. 표준 자바 관례에 따르면 정적 공개 상수 다음으로 정적 비공개 변수 이어서 비공개 인스턴스 변수가 나온다. 변수 다음으로는 공개 함수가 나오고 비공개 함수는 자신을 호출하는 공개 함수 바로 다음에 넣는다.

  2. 캡슐화 - 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 protected로 선언해 접근을 허용하기도 한다 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다.

  • 클래스는 작아야 한다!

  1. 클래스는 작아야 한다. 클래스의 크기를 나타는 척도는 클래스가 맡은 책임이다.

  2. 클래스 이름에 proccesor, manager, super등 모호한 단어가 있다면 여러 책임을 떠맡았다는 증거이다. 또한 if, and, or, but을 사용하지 않고 25자 내외로 가능해야한다.

  3. 단일 책임 원칙(SRP) - 클래스나 모듈을 변경할 이유가 단 하나뿐이어야 한다는 원칙 -> 큰 클래스가 몇개가 아닌 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다.

  4. 응집도(메서드가 변수가 서로 의존하는 빈도)를 유지하면 작은 클래스 여럿이 나온다. - 큰 함수를 작은 함수로 쪼개다 보면 작은 클래스 여럿으로 쪼갤 기회가 생기며 그러면서 점점 더 체계가 잡히고 구조가 투명해진다.

  • 변경하기 쉬운 클래스

  1. OCP : 클래스는 확장에 개방적이고 수정에 폐쇄적이어야 한다는 원칙

  2. 변경으로부터 격리 - 결합도를 최소로 줄이면 자연스럽게 다른 클래스 설계 원칙인 DIP를 따르는 클래스가 나온다 (DIP : 클래스가 상세한 구현이 아닌 추상화에 의존해야 한다는 원칙)

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

클래스안에 무차별적으로 때려넣고 이것은 다기능 클래스라고 생각하며 살아왔다. 그러나 만능 클래스가 아닌 정리하기 귀찮음이 낳은 쓰레기 더미였다. 앞으로는 클래스의 응집도를 고려하여 클래스를 작게 한가지 책임만 맡을 수 있도록 구현을 해봐야 겠다.

오늘 읽은 다른사람의 TIL

gongmeda님의 Assignment #14 (10장.클래스) – 노마드 코더 Nomad Coders