티스토리 뷰

도서/클린 코드

클래스

woo'^'chang 2022. 7. 19. 13:42

자바는 결국 클래스로 모든 것이 구성되어 있습니다. 코드, 함수에서 더 높은 차원인 클래스까지 신경 써야만 깨끗한 코드를 얻을 수 있습니다. 이 장에서는 깨끗한 클래스에 관한 내용을 다루고 있습니다.

클래스 체계

표준 자바 관례에 따르면 가장 먼저 변수 목록이 나와야 합니다. 정적 공개 상수, 정적 비공개 상수, 비공개 인스턴스 변수 순으로 나열합니다. 공개 변수가 필요한 경우는 거의 존재하지 않습니다.

 

테스트는 아주 중요한 구성 중 하나이기에 테스트를 위해 protected로 선언하거나 package-private를 사용하기도 합니다. 하지만 이를 사용하기 전 비공개로 할 수 있는가에 대해 끊임없이 고민이 필요합니다.

 

클래스도 함수와 마찬가지로 작아야만 합니다. 그렇다면 클래스의 크기는 얼마나 작아야 할까요? 여기서 작다는 의미는 코드 수가 적은 것이 아닌 책임이 적다는 의미도 담고 있습니다. 클래스의 이름은 클래스의 책임을 나타냅니다. 너무 많은 책임을 지지 않도록 작명하는 것 또한 깨끗한 클래스를 만드는 과정 중 하나입니다.

단일 책임 원칙

단일 책임 원칙(Single Responsibility Principle)은 클래스나 모듈을 변경할 이유가 단 하나여야 한다는 원칙입니다. 이는 추상화도 편리해지는 장점이 있기에 객체 지향 설계에 있어 중요한 개념 중 하나입니다. 단일 책임 클래스가 많아지면 큰 그림을 이해할 수 어렵다는 우려로 인해 작게 만들기를 꺼리고 있습니다.

 

잘못된 생각으로 인해 시스템은 논리가 많고 복잡해집니다. 클래스 간 의존성이 높아지게 되고 변경이 어려워집니다. 큰 클래스 몇 개가 아니라 작은 클래스 여러 개로 이루어진 시스템이 더 바람직하다는 것을 이해해야 합니다.

응집도

응집도는 클래스 내부에서 결합도를 의미합니다. 응집도가 높을수록 탄탄한 클래스라 말할 수 있습니다. 클래스는 인스턴스 변수의 개수를 적게 가져가면서 각 메서드들은 인스턴스 변수를 사용해야 합니다. 모든 메서드가 인스턴스 변수를 사용한다면 응집도가 높은 이상적인 클래스라 말할 수 있지만 이렇게 만들기는 어렵습니다.

 

하지만 이를 생각하면서 클래스를 작성한다면 단일 책임을 가진 여러 클래스를 만들기에 편리합니다. 처음부터 단일 책임을 가진 클래스를 설계하기 어렵기에 이 방법을 사용하여 천천히 익숙해지도록 하면 좋을 것 같습니다.

마치며

지금까지 수없이 많은 클래스를 작성해 왔지만 깊게 생각하며 작성해보지는 않은 것 같습니다. 메서드를 작성하며 변수를 추가해 갔더니 변경도 어렵고 단일 책임도 가지지 않는 클래스가 되어버렸습니다. 클래스를 작성할 때 클래스의 책임을 이해하고 알맞은 인스턴스 변수를 설정하여 메서드들이 응집도 높은 동작을 수행하도록 클래스를 작성해 나갈 것입니다.

'도서 > 클린 코드' 카테고리의 다른 글

창발성  (0) 2022.07.21
시스템  (0) 2022.07.21
단위 테스트  (0) 2022.07.17
경계  (0) 2022.07.17
오류 처리  (0) 2022.07.16
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday