2009-12-05 2 views
2

애스펙트 및 포인트 컷 외에도 크로스 커팅 문제를 해결할 수있는 해결 방법이 있습니까?리팩토링 : 크로스 커팅 관련 문제 해결 방법

우리는 Spring MVC를 사용 중이며 여러 이유로 인해 AspectJ 또는 Spring의 aspect 처리에 들어갈 수없는 비즈니스 애플 리케이션에 대해 작업하고있다.

일부 컨트롤러는 너무 부풀어 오르며, 집중력이 떨어지는 코드가 어디서나 들어 왔습니다.

나는 리펙토 러에 앉아있을 때마다 같은 일이 반복되는 것을 봅니다. 설명 드리겠습니다 :

언제든지보기를 준비해야하며 UI 목록에 국가 목록을 추가합니다. (ModelAndView에 추가 된 객체). 이 목록은 DB에서 ehCache로 가져옵니다.

이제 처음에는 목록 인라인을 mav의 모든 곳에 추가하려고 시도했을 때 끔찍했습니다. 대신 모든 ModelAndView를 처리 할 함수를 준비했습니다. 방법? 잘, 함수에 더 많은 쓰레기 호출과 함께!

그리고 나는 또 다른 문제를 해결했습니다.

나를 조금 도와 줄 수있는 디자인 패턴/트릭이란 무엇입니까? ModelAndView에 함수를 추가하는 함수를 호출하는 데 아프다. 3500 라인이 넘는 컨트롤러 코드 만 있으면 실종 된 모든 접착제 점을 찾을 수있다.

제안을 환영합니다. 크로스 커팅은 AspectJ 또는 Spring 네이티브 없이는 맛을 우려합니다.

+2

AOP는 OOP가 그 자체에 도움이되지 않으므로 크로스 커팅 문제에 대해 개발되었습니다. –

답변

1

자바를 사용하고 있으므로 자바와 상호 작용하기 때문에 코드를 스칼라로 옮긴 다음 특성을 사용하여 원하는 기능을 사용할 수 있습니다.

불행히도 크로스 커팅은 OOP의 문제이므로 함수 프로그래밍으로 변경하는 것이 해결책 일 수 있습니다. 그러나 실제로는 이러한 믹스 인을 구현하기 위해 AOP를 사용하기 때문에 여전히 AOP 일 것입니다. .

다른 옵션은 응용 프로그램을 다시 디자인하고 코드가 중복되지 않았는지 확인하는 것이지만 중요한 리팩토링은 매우 어렵고 위험합니다.

그러나 예를 들어, ModelAndView를 호출하여 여러 가지 정적 유틸리티 클래스를 호출하여 필요한 데이터를 가져 오거나 사용자에게 올바른 역할이 있는지 확인할 수 있습니다.

Refactoring to Patterns (http://www.industriallogic.com/xp/refactoring/)에서 아이디어를 얻을 수 있습니다.