2017-05-17 2 views
0

첫 번째 회사에서 10 년을 보낸 후 제 2의 개발자 작업을 시작했는데 선임 개발자라는 직책을 얻은 것 같지는 않습니다. Java 개발 이었지만 우리는 빈혈이있는 도메인 모델로 작업하고있었습니다. 그리고 제 생각에 응용 프로그램은 테스트하기가 힘들었습니다. 불행히도 내가 지금하고있는 코드베이스는 정확히 동일합니다. 그리고 최근에 면접관이 Hibernate 모델을 경량이고 setter 게터를 포함하고있는 다른 인터뷰를했습니다. 따라서 이것은 업계 전반에 걸쳐 매우 일반적으로 보입니다.다른 선택의 여지가없는 빈혈 도메인 모델을 만드는 방법

빈혈 도메인 모델을 반 패턴으로 묘사하는 기사가 많으며 간단한 시스템에서 완벽하게 문제가없는 일부 기사도 있습니다. 그러나 ADM을 사용하는 대규모 엔터프라이즈 시스템에서 최선을 다하는 예는 보지 못했습니다.

아무도이 경험이 있습니까? 읽기 쉽고 가치있는 단위 테스트가 포함 된 느슨하게 결합 된 시스템을 만드는 모범 사례가 있습니까? 나는 정말로 내 일에 자부심을 갖고 싶지만 희망을 잃고있다.

편집 : 비즈니스 로직을 옹호 개발자에게 이 서비스에 포함되는 :

  • 방법은 각 서비스 내에서 다른 서비스에 대한 종속성을 제한합니까? 즉 OrderCancelService에 CustomerAccountService 및 PaymentService 및 RefundCalculatorService 및 RewardsAdjustmentService가 필요합니다. 테스트에서 여러 모의 객체로 이어져 테스트에 방해가되는 경우가 있습니다.

  • 각 서비스 메소드의 매개 변수 개수를 제한 하시겠습니까? 모든 것이 전달되어야하고 객체가 자체 데이터에서 작동하지 않으므로 매우 크고 혼동스러운 메소드 서명을 초래합니다.

  • 적용 하시겠습니까? 서비스 객체에 원칙을 묻지 마십시오? 실행 서비스에서 호출 서비스가 결정을 내리는 데 사용되는 값을 반환하는 많은 서비스를 봅니다.

+0

확실한 것은, 복잡하고 문제가 많은 도메인에 대한 빈혈 모델을 의미하는 것이지 간단하고 칙칙한 도메인을위한 것이 아닙니다. 맞습니까? – guillaume31

+0

@ guillaume31 그래, 그게 내가 고민하는거야. 다양한 사용자 상호 작용에 의해 트리거되는 다양한 워크 플로가 있습니다. 각 사용자 상호 작용은 여러 엔터티의 여러 속성을 기반으로 결정을 내리고 각 속성은 여러 속성을 업데이트합니다. 이것은 대형 서비스/유틸리티/관리자 클래스가 폭발적으로 증가한 것으로 보입니다. 따라서 논리를 엔티티로 옮길 수 없다는 점을 감안할 때 민첩한 원칙을 적용하고 민첩한 개발로 강조된 TDD를 적용하기 위해 최선을 다 할 것입니다. – WorkinHard

+0

업계에 오신 것을 환영합니다. 사실 DDD와 TDD를 올바르게 적용하거나 팀을 구성 할 수있는 팀에 합류하기가 정말 힘듭니다. 내가 말할 수있는 것은 당신이 인터뷰하는 동안이 모든 것을 스스로 알아 내려고 노력해야한다는 것입니다. 건축가 모자를 쓰는 것조차도 회사 문화에 따라 어려울 수 있으므로 계속 찾고 계속 포기하지 마십시오!ddd 코스에 참석하고 직접 커뮤니티에 참여하여 연락을 취하십시오. –

답변

1

도메인 모델 상태의 지속성 모델 인 빈혈 모델을 현재 빈혈 도메인 모델이라고 생각할 수 있습니다.

이렇게하면 실제 도메인 모델을 만들 수 있습니다.이 도메인 모델은 상태가 지속성 모델 객체 (상태 패턴) 내에 저장됩니다. 그런 다음이 새로운 도메인 모델에 논리를 적용 할 수 있습니다. 위에서 언급 한 내용을 읽으면 관리자/서비스 클래스를 상태 머신으로 변환 할 수 있고, 트랜잭션 경계와 일치하면 집계를 호출 할 수 있으며, POJO 상태는 Hibernate에 의해 지속된다.

+0

같은 이름의 Java 클래스 안에서 JPA 엔티티를 숨기도록 팀을 설득하는 것은 어렵다고 생각합니다. 각 개체 즉, OrderService를 cancel, addOrderLines와 같은 메서드로 둘러싼 이러한 상태 저장 서비스에 대한 모범 사례가 있는지 궁금합니다. 서비스 계층에 로직을 옹호하는 개발자에게는 - 이러한 서비스에 대한 게터 메소드가 없거나 유닛 테스트 및 조롱을보다 명확하게 만들 수 있도록 긴 매개 변수 목록을 제한하는 것과 같은 모범 사례가 있습니까? – WorkinHard

관련 문제