더북(TheBook)

작동은 잘 되지만 getSuggestedTicket 코드가 갑절로 불어났다. 핵심 기능과 전혀 무관한 코드가 많이 보인다.

getSuggestedTicket을 그대로 둔 상태에서 기능만 추가할 수 있으면 좋으련만……. 10분 후 캐시한 결과를 만료시키는 식으로 캐싱 전략을 나중에 바꿔달라고 하면……? 추가 기능(예: 사용자가 원하는 옵션을 쿠키에 저장)이 방해받지 않는 방향으로 연결할 수 있으면 좋을 텐데…….

바로 이런 일들을 애스팩트 지향 프로그래밍으로 할 수 있다. 곧이어 보다시피 AOP 프레임워크로 개발하면 원본 코드를 하나도 건드리지 않은 채 애플리케이션 시동 로직에 코드를 넣을 수 있다.

Aop.around('getSuggestedTicket', cacheAspectFactory());

 

cacheAspectFactory()는 모든 호출을 가로챌 수 있는, 완전히 재사용 가능한 캐싱 함수를 반환하며 똑같은 인자가 들어오면 똑같은 결과를 반환한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.