클래스 체계
클래스를 정의하는 표준 자바 관례
1. 정적 공개 상수 - public static
2. 정적 비공개 변수
3. 비공개 인스턴스 변수
4. 공개 함수
5. 비공개 함수 - 자신을 호출하는 공개 함수 직후에 삽입
--> 위 순서대로 작성함으로서 추상화 단계가 순차적으로 내려오게 되고, 프로그램이 신문 기사처럼 읽히게 된다.
클래스는 작아야 한다!
클래스 만드는 규칙
첫째 클래스는 작아야 한다.
둘째 클래스는 더 작아야 한다.
그럼 여기서 생기는 의문은 "클래스는 얼마나 작아야 하는가?" 이다.
이전에 함수는 물리적인 행 수로 크기를 측정했다.
클래스는 클래스가 맡은 책임을 센다.
클래스 이름은 해당 클래스 책임을 기술해야 한다. 실제로 작명은 클래스 크기를 줄이는 첫 번째 관문이다.
간결한 이름이 떠오르지 않는다면 필경 클래스 크기가 너무 커서 그렇다.
클래스 이름이 모호하다면 클래스 책임이 너무 많아서다.
예를 들어, 클래스 이름에 Processor, Manager, Super 등과 같이 모호한 단어가 있다면 클래스에다 여러 책임을 떠안겼다는 증거다.
단일 책임 원칙
단일 책임 원칙은 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다.
SRP는 '책임'이라는 개념을 정의하며 적절한 클래스 크기를 제시한다. 클래스는 책임, 즉 변경할 이유가 하나여야 한다는 의미다.
책임, 즉 변경할 이유를 파악하려 애쓰다 보면 코드를 추상화하기도 쉬워진다.
응집도
클래스는 인스턴스 변수가 적어야 한다.
각 클래스 메서드는 클래스 인스턴스 변수를 하나 이상 사용해야 한다.
일반적으로 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 더 높다.
응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미기 때문이다.
응집도를 유지하면 작은 클래스 여럿이 나온다.
몇몇 함수만 사용하는 인스턴스 변수가 점점 더 늘어나기 때문이다. 그런데, 몇몇 함수가 몇몇 변수만 사용한다면 독자적인 클래스로 분리해도 되지 않는가? 당연하다. 클래스가 응집력을 잃는다면 쪼개라!
그래서 큰 함수를 작은 함수 여럿으로 쪼개다 보면 종종 작은 클래스 여럿으로 쪼갤 기회가 생긴다.
그러면서 프로그램에 점점 더 체계가 잡히고 구조가 투명해진다.
'클린코드' 카테고리의 다른 글
나누기 (0) | 2023.02.16 |
---|---|
변수 아껴 사용하기 (0) | 2023.01.27 |
6. 객체와 자료구조 (1) | 2022.10.27 |
5. 형식 맞추기 (0) | 2022.10.26 |
3. 함수 (1) | 2022.10.24 |
댓글