티스토리 뷰

목차

1. 클래스 체계

2. 단일 책임 원칙

3. 낮은 결합도와 높은 응집도

4. 클래스는 변경하기 쉬워야 한다.

 

 

1. 클래스 체계

클래스를 정의하는 표준 자바 관례에 따르면 다음과 같은 순서이다.

  • static public 상수 > private 변수
  • 공개 함수 > private 함수

비공개 함수는 자신을 호출하는 공개 함수 직수에 넣는다.

추상화 단계가 순차적으로 내려가 가독성이 높아진다.

 

캡슐화

https://www.programminghunk.com/2020/01/encapsulation.html

클래스를 개발할 때 기본적으로 구현을 감추고 외부 객체와 상호작용 하는 부분만 노출한다.

필드를 private으로 제한, 외부의 잘못된 사용을 방지한다.

 

 

2. 단일 책임 원칙 (SRP)

클래스는 함수와 마찬가지로 작아야 한다.

작은 클래스는 각자 맡은 책임이 하나며, 변경할 이유가 하나며,

다른 클래스와 협력해 시스템에 필요한 동작을 수행한다.

규모가 어느 수준에 이르는 시스템은 논리가 많고 복잡하다.

이런 복잡성을 다루려면 체계적인 정리가 필수다. 그래야 개발자가 무엇이 어디에 있는지 쉽게 찾는다.

변경이 발생하는 상황에서 직접 영향이 미치는 컴포넌트만 이해해도 충분한데,

큼직한 다목적 클래스 몇 개로 이뤄진 시스템은 당장 알 필요가 없는 사실까지 들이밀어 독자를 방해한다.

 

 

3. 낮은 결합도와 높은 응집도

 

결합도는 낮을 수록 응집도는 높을 수록 유지보수성이 좋다.

낮은 결합도

  • 시스템의 결합도를 낮추면 유연성과 재사용성도 더욱 높아진다.
  • DIP - 클래스가 상세한 구현이 아니라 추상화에 의존해야 한다.
  • 추상화를 이용하면 테스트 코드 짜기에 용이하다.

결합도가 높은 클래스의 문제점

  • 연관된 클래스가 변경되면 수정이 필요하다.
  • 결합도가 높으면 연관된 클래스들을 모두 이해해야 한다.

 

높은 응집도

  • 클래스는 인스턴수 변수 수가 적어야 한다.
  • 메서드는 인스턴스 변수를 하나 이상 사용해야 한다.
  • 메서드가 인스턴스 변수를 많이 사용할 수록 응집도가 높아진다.
  • 응집도가 높다 = 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다.
  • 클래스가 응집도를 잃어간다면 함수를 쪼개야 한다.

 

응집도가 낮은 클래스의 문제점

  • 여러 기능이 있으므로 이해하기 어렵다.
  • 재사용하기 어렵다.

 

4. 클래스는 변경하기 쉬워야 한다.

새로운 기능을 추가할 때 기존 코드에도 수정이 발생하면 OCP에 위반된다.

새로운 SQL을 추가할 때도 수정이 발생하고, 기존 SQL 문을 수정할 때도 수정이 발생하므로 OCP에 위반된다.

따라서 공개 인터페이스를 전부 SQL 클래스에서 파생하는 클래스로 만들고,

비공개 메서드는 해당 클래스로 옮기고 공통된 인터페이스는 클래스로 분리했다.

새로운 기능에는 개방적인 동시에 다른 클래스를 닫아놓는 방식으로 수정에 폐쇠적이다.

 

 

 

 

 

출처

Clean Code(클린 코드) 애자일 소프트웨어 장인 정신 - 로버트 C. 마틴 지음

https://zero-base.co.kr/category_dev_camp/cleancode_1book

 

 

 

728x90