Study/CleanCode
[클린코드] 12장. 창발성
Wonol
2024. 6. 27. 16:19
반응형
클린코드(CleanCode)를 읽고 간략하게 정리한 글입니다.
12장. 창발성
1. 단순한 설계 규칙
1-1. 모든 테스트를 실행하라
- 테스트가 불가능한 시스템은 검증도 불가능하다.
- 테스트가 가능한 시스템을 만들려고 애쓰면 설계 품질이 더불어 높아진다.
- SRP 를 준수하는 클래스는 테스트가 훨씬 더 쉽고 이런 테스트 케이스가 많을수록 쉽게 코드를 작성할 수 있다.
- 테스트 케이스를 작성하면 설계 품질이 높아진다.
1-2~4 : 리팩토링
- 테스트 케이스를 모두 작성했다면 코드를 점진적으로 리팩터링 해나간다.
- 코드를 정리하면서 시스템이 깨질까 걱정할 필요가 없다. 테스트 케이스가 있으니까!
- 리팩터링 단계에서 소프트웨어 설계 품질을 높이는 기법이라면 무엇이든 적용해도 좋다.
- 응집도를 높이기
- 결합도를 낮추기
- 관심사 분리
- 함수와 클래스 크기를 줄이기
- 더 나은 네이밍룰 적용하기
2. 중복을 없애라
- 코드는 중복이 없어야 한다.
- 중복된 코드는 유지보수의 어려움을 증가시키고, 변경이 발생할 때 여러 곳을 수정해야 하는 문제를 발생시킨다.
3. 표현하라
- 소프트웨어 프로젝트 비용 중 대부분은 유지보수에 들어간다.
- 개발자가 코드를 명확하게 짤수록 다른 사람이 코드를 이해하기 쉬워진다.
- 의미 있는 이름 : 변수, 함수, 클래스 등에 의미 있는 이름을 부여하고, 그 역할과 의도를 명확하게 한다.
- 간결한 코드 : 복잡한 로직을 단순화하고, 코드의 가독성을 높인다.
- 주석 : 주석을 통해 코드의 의도와 비즈니스 로직을 설명하되, 과도한 주석은 사용하지 않는다.
- 단위 테스트 : 단위 테스트 케이스를 꼼꼼히 작성하면 클래스의 기능이 한눈에 들어온다.
4. 클래스와 메서드 수를 최소로 줄여라
- 클래스와 메소드는 가능한 최소한으로 유지되어야 한다.
- 오히려 지나치게 많은 클래스와 메소드는 코드의 복잡성을 증가시키고, 이해하기 어려운 구조를 만든다.
- 단순하고 명확한 설계를 유지하기 위해, 필요한 경우에만 새로운 클래스와 메소드를 생성한다.
- SRP (단일 책임 원칙) : 각 클래스와 메서드는 하나의 책임만 가지도록 설계한다.
- 작고 단순한 메서드 : 메서드는 하나의 작업만 수행하며, 가능한 작게 유지한다.
- 모듈화: 관련된 기능을 모듈화하여, 코드의 구조를 명확히 하고 재사용성을 높인다.
5. 창발적 설계의 구현 예시
- 테스트 통과: TDD를 통해 코드를 작성하고, 모든 테스트가 통과하도록 유지한다.
- 중복 제거: 중복된 로직을 함수로 추출하고, 공통 모듈로 만들어 재사용한다.
- 표현력: 의미 있는 이름을 사용하고, 코드를 간결하게 작성하여 가독성을 높인다.
- 최소화: 클래스와 메서드를 적절하게 분할하여, 각자의 책임을 명확히 하고 복잡성을 줄인다.
반응형