클린코드

11장~13장

달팽이포뇨 2022. 6. 27. 14:48

11장-시스템

사용과 제작 분리 - 의존성 주입 - 단일 책임 원칙

클래스는 수동적으로 작동, setter나 생성자를 이용하여 의존성을 주입한다.

AOP - Aspect Oriented Programming, 관점 지향 프로그래밍 - 관점: 특정 관심사를 지원하려면 시스템에서 특정 지점들이 동작하는 방식을 일관성 있게 바꿔야한다. - 영속성 제공

 

자바 프록시 - 단순한 상황에 적합 - 개별 객체나 클래스에서 메서드 호출 감싸기

순수 자바 AOP 프레임워크

AspectJ 관점 - 관심사를 관점으로 분리하는 가장 강력한 도구: AspectJ 언어

테스트 주도 시스템 아키텍처 구축 - 상황에 맞게 새로운 기술을 채택해 아키텍처 변경 가능

 

깨끗하지 못한 아키텍처는 도메인 논리를 흐리며 기민성을 떨어뜨리고 제품 품질이 떨어지고 생산성이 낮아진다.

 

12장-창발성

고려대한국어대사전에 의하면 창발성이란 남이 모르거나 하지 아니한 것을 처음으로 또는 새롭게 밝혀내거나 이루어 내는 성질이라고 한다. 켄트 벡이 제시한 단순한 설계 규칙 네 가지가 소프트웨어 설계 품질을 크게 높여준다고 말한다. 

모든 테스트를 실행하는 것, 리팩터링 관련 설계 규칙이다. 

중복을 줄이고, 분명하게 표현하고, 클래스와 메서드 수를 최소로 줄여서 크기도 작고, 의도를 분명하게 표현하며, 단순하게 설계하는 것이 좋다.

 

13장-동시성

동시성은 무엇과 언제를 분리하는 전략이다. 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 좋아진다.

동시성 오류를 일으키는 원인을 이해하고 사용하는 라이브러리와 기본 알고리즘 기능을 이해해야한다. 그리고 보호할 코드 영역을 찾아내는 방법과 특정 코드 영역을 잠그는 방법을 이해하고 공유할 정보와 공유하지 않는 정보를 구분해야한다.

TDD와 보조코드를 이용하면 오류를 찾는데 도움이 된다.

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

15장~16장  (0) 2022.06.30
14장  (0) 2022.06.30
7장~10장  (0) 2022.06.02
4장-6장  (0) 2022.04.06
1주차 1장~3장  (0) 2022.03.30