2011년 5월 26일 목요일

Change Bidirectional Association to Unidirectional



서로 링크를 가지는 두 개의 클래스에서 한 쪽이 다른 한쪽을 더 이상 필요로 하지 않을 때는 불필요한 링크를 제거 하라.

! 동기
  • 양방향 연관은 편리하긴 하지만 객체가 적절히 생성/제거되는지를 확인해야 하는 등의 복잡성이 증가한다.
  • 링크에서는 좀비를 유도하기 쉽다.
  • 제 몫을 하지 못하는 양방향 연관을 발견하면 즉시 불필요한 한 쪽 링크를 끊어라.

! 절차
  • 삭제하고자 하는 포인터에 대한 필들르 읽고 있는 곳을 모두 조사하여 , 삭제가 가능한 지 확인하라.
  • 만약 클라이언트 코드에서 get 메소드를 사용해야 한다면, get메소드에 Self Encapsulate Field를 사용하고, Substitute Algorithm을 적용한 후 컴파일, 데스트를 한다.
  • 만약 클라이언트 코드에서 get 메소드를 필요로 하지 않으면, 포인터 필드를 사용하는 부분을 찾아 필드의 객체를 다른 방법으로 얻을 수 있도록 한다. 각각의 변겨에 대해서 컴파일, 테스트 한다.
  • 필드를 읽는 부분을 모두 제거한 후에, 필드에 업데이트 하는 코드와 필드을 제거한다.

! 관련 리팩토링
  • Self Encapsulate
  • Substitute Algorithm

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...