clean code (15) 썸네일형 리스트형 [클린코드] 공통관심사항(cross-cutting concern)과 AOP(Aspect Oriented Programming) 공통 관심 사항 (cross cutting concern) 과 AOP (aspect oriented programming) 어플리케이션은 다양한 공통 기능을 필요로 한다. 로깅과 같은 기본적인 기능에서부터 트랜잭션이나 보안과 같은 기능에 이르기까지 어플리케이션 전반에 걸쳐 적용되는 공통 기능이 존재한다. 이들 공통 기능들은 어떤 특정 모듈에서만 필요로 하는 것이 아니라, 어플리케이션 전반에 걸쳐 필요한 기능이다. 또한, 이런 공통 기능들은 어플리케이션의 핵심 비즈니스 로직과는 구분되는 기능이다. 핵심 비즈니스 기능과 구분하기 위해 공통 기능을 공통 관심 사항(cross-cutting concern)이라고 표현하며, 핵심 로직을 핵심 관심 사항(core concern)이라고 표현한다. 공통 관심 사항들을 .. [클린코드] CHAP 14 점진적인 개선 CHAPTER 14 점진적인 개선 명령형 인수 구문 해석기 코드 초안 모든 로직이 하나의 클래스에 들어가 있다.코드 완성본 Args 클래스에서 코드 중복을 최소화하고 ArgsException 클래스를 분리했다. ArgumentMarshaller 클래스를 통해 여러 인수에 대한 추후 확장성을 만들어 놓는다. 코드만 분리해도 설계가 좋아진다. 관심사를 분리하면 코드를 이해하고 보수하기 쉬워진다. 점진적으로 개선하기 프로그램을 망치는 가장 좋은 방법 중 하나는 개선이라는 이름 아래, 구조를 크게 뒤집는 행위이다. 코드가 나빠짐을 느낄때 기능을 추가하지 않고 개선을 시작한다. 테스트 코드를 작성한다. 책임에 따라 클래스를 나누고 코드를 옮긴다. 테스트가 깨지지 않도록 확인하며 자잘한 변경을 조금씩 진행한다. I.. [클린코드] CHAP 13 동시성 CHAPTER 13 동시성 동시성 프로그래밍이란 어플리케이션을 효율적으로 실행하기 위해 멀티코어를 온전히 활용하도록 구현하는 방식 외부 서비스의 응답을 기다리면서 아무일도 하지 않으면 CPU 사이클이 낭비된다. 동시성을 구현한다고 해서 클라이언트 입장에서 자신의 요청이 빨리 처리되는게 아니다. 어플리케이션 입장에서는 효율적으로 코어를 사용하여 처리량을 높일 수 있다. 언어레벨에서 하드웨어의 멀티코어를 적절하게 사용하도록 지원하기 때문에 동시성만 신경써서 개발하면 된다. 동시성과 병렬성이 구현된 경우 서버(코어)를 효율적으로 사용하여 처리량을 최대화 클라이언트가 아닌 어플리케이션 관점에서의 효율성을 높여야 한다. 동시성이 필요한 이유 동시성은 항상 성능을 높여주는 것이 아닌, 때로 성능을 높여준다. 자바 .. 이전 1 2 3 4 5 다음