해당 글은 Robert C.Martin 클린 코드 라는 책을 읽고 학습한 내용을 정리 및 회고하는 글 입니다. 자세한 사항은 YES 24 클린 코드 - 애자일 소프트웨어 장인 정신 에서 확인해주세요.
클린 코드 - 애자일 소프트웨어 장인 정신 (Uncle Bob)
- 위키북스
- 지은이: Robert C.Martin (Uncle Bob)
- 옮긴이: 박재호, 이해영
이번 장에서 이야기하고자 하는 것
높은 추상화의 수준, 시스템 수준에서도 깨끗함을 유지하는 방법
시스템의 제작과 시스템 사용을 분리하라 (construction vs use)
- 시작 단계는 모든 애플리케이션이 풀어야 할 관심사
- 전형적인 예시로는 Lazy Initializing
- 객체의 생성과 런타임 로직이 섞여있다
- 책임이 여러개다
- 관심사의 분리가 되지 않았다
- 의존성 주입은 제작과 사용을 분리하는 가장 강력한 메커니즘
- 가장 강력한 메커니즘
확장
- 처음부터 '올바르게' 시스템을 만들 수 있다는 믿음은 미신이다.
- 우리는 오늘 주어진 사용자 스토리에 맞게 시스템을 구현해야 한다
- 내일은 새로운 스토리에 맞게 시스템을 조정하고 확장하면 된다.
- TDD, Refactoring 으로 얻어지는 깨끗한 코드는 코드 수준에서 시스템을 조장하고 확장하기 쉽게 만들어진다.
- 시스템 수준에서는 역시나 적절한 관심사의 분리이다.
횡단 관심사
- 횡단 관심사는 통해서 모듈성을 확보하는 일반적인 방법론이다.
- 특정 관심사를 지원하려면 시스템에서 특정 지점들이 동작하는 방식을 일관성 있게 바꾸어야 한다.
- 대표적인 횡단 관심사
- Java Proxy
- 순수 자바 AOP 프레임워크
- AspectJ 관점
테스트 주도 시스템 아키텍처 구축
- 아주 단순하면서도 멋지게 분리된 아키텍처로 결과물을 출시한다.
- 이후 기반 구조들을 추가하며 조금씩 확장해 나가자
의사 결정을 최적화 하라
- 모듈과 관심사의 분리가 된다면 지엽적 관리와 결정이 가능해짐
- 가능한 마지막 순간까지 결정을 미루는 방법이 최선이다
- 명백한 가치가 있을 때 표준을 현명하게 사용하라
- 표준이 가져다주는 불필요함과 비효율이 존재할 수 있다.
- 확실한 이득을 가져올 경우에만 사용하라
나의 해석과 회고
의사 결정을 최적화 하라, 내가 최근들어 가장 많이 느끼고 있는 것들이다.
성급한 의사 결정을 할 때면 즉, 무언가 결정이 된 상태로 프로젝트가 진행되다 보면 시야가 좁아지는 경험을 자주 했었고 그 해결 방법으로 의사결정을 최후로 미루도록 했었다.
비단 프로젝트 관리 뿐만 아니라 시스템 설계에서도 위의 방법이 매우 효과적이었다.
의사결정을 미루다 보면 어떠한 요구사항이 들어올지 모르기 때문에 최대한 많은 요구사항을 수용할 수 있도록 생각할 수 있게 되더라.
이러한 방법을 시스템 설계에서도 적용시킨다면 Uncle Bob 말 대로 깨끗한 시스템의 아키텍쳐가 탄생할 수 있을것 같다.
또한 한가지 더 느낀바가 있다면 명백한 가치가 있을 때 표준을 현명하게 사용하라 에서 몇가지 과거의 기억들이 스쳐지나갔다.
나는 왜 xxxServiceImpl
이라는 클래스를 쓸까? 왜 xxxDAO
라는 클래스를 썼을까?
요즘은 잘 하지는 않지만 사용하는 당시에도 왜 쓰고 왜 저런 이름을 부여했는지 모른다.
관례에 따라서 사용했다고는 하나 왜 관례가 나왔는지 잘 모른다.
이와 비슷한 맥락으로 내가 아직 알지는 못하나 명백한 가치가 없음에도 불구하고 사용하는 몇가지의 표준들이 있을것이다.
경계하자
'더 좋은 개발자 되기 > 개발자 책읽기' 카테고리의 다른 글
[개발자 책읽기] 클린 코드-애자일 소프트웨어 장인 정신 (12장 창발성) (0) | 2022.03.14 |
---|---|
[개발자 책읽기] Java로 해석한 GoF 의 Design Pattern (생성 - 빌더 패턴) (0) | 2022.03.12 |
[개발자 책읽기] Java로 해석한 GoF 의 Design Pattern (생성 - 팩토리 메서드 패턴) (0) | 2022.03.07 |
[개발자 책읽기] 클린 코드-애자일 소프트웨어 장인 정신 (10장 클래스) (0) | 2022.03.07 |
[개발자 책읽기] 클린 코드-애자일 소프트웨어 장인 정신 (9장 단위 테스트) (2) | 2022.03.06 |
댓글