MP Default 패키지 내 일부 클래스의 이름 변경

Midnight Peach 2008. 12. 15. 14:20

[주의]
이 글은 MP의 현재 버전 (3.X)에 맞지 않습니다.

단순 참고용으로만 활용하십시오

처음부터 계속 마음이 걸려왔던 일인데, Manager 클래스들(ContactManager, MemoManager 등)의 이름이 항상 마땅찮았습니다.

MP의 처음 버전에서는 MemoManager의 이름이 MemoDto 였습니다.

즉 Memo 엔터티를 전달하는 역할을 하는 클래스(Data Transfer Object, 제가 만든 말이 아니고 공식 용어입니다.) 라는 의미였습니다.

하지만, MemoManager를 예를 들어 생각해 보면, MP의 아키텍쳐에서 MemoManager의 역할은 일반적인 데이터 전달 객체 이상입니다.

경우에 따라서는 MemoManager에 비지니스 로직이 담기는 경우도 있습니다.

(엄밀히 말하자면, MemoManager의 여러 부분 클래스 중 MP가 생성해 낸 부분 클래스에는 데이터 전달 객체로서의 역할만 하고, 사용자가 작성한 부분 클래스에는 비지니스 로직이 들어가는 것이 MP의 설계 의도입니다.)

그래서 MemoDto라는 이름은 적당하지 않은 것 같아 고심하다 장고 끝에 MemoManager라고 결정을 하였었습니다.

하지만 이 MemoManager라는 이름도 별로 마음에 들지 않습니다.

Manager가 다소 애매모호한 의미를 가지고 있어, MemoManager라는 이름을 들었을 때 직관적으로 MemoManager의 역할이 연상되지 않기 때문입니다.

(이렇게 애매모호하여 잘못된 이름의 또 다른 예로 GeneralUtility 같은 이름을 들 수 있겠습니다. 경험 상 이러한 이름의 클래스가 나타나게 되면 클래스 간의 설계에 빈 틈이 있을 확률이 높았습니다.)


결국 MemoManager를 MemoBiz로 변경하기로 하였습니다.

아래는 MP의 Defulat 패키지가 생성해 낸 코드의 구조입니다.

이전과 비교해서 이름이 바뀐 폴더나 파일에는 밑줄을 그어 두었습니다.

하나씩 살펴보면,

  1. Managers 폴더 -> Biz 폴더
  2. [Entity]Manager -> [Entity]Biz  // [Entity]는 각 엔터티(예, Memo)의 이름
  3. EntityManager -> EntityBiz
  4. ManagerRepository -> Business

와 같습니다.


각 Biz 객체에 접근하는 Facade 역할을 하는 ManagerRepository 클래스의 이름이 Business로 변경되었기 때문에, 위의 코드를 사용하는 코드도 아래와 같이 변경되어야 합니다.

: