mobilohas / object

object 책 읽기 스터디
3 stars 1 forks source link

[Chapter05] 실무에서 작성하는 코드에서는 이미 책임중심 설계가 이뤄지고 있는 걸까요? #20

Closed JisuPark-dev closed 1 month ago

JisuPark-dev commented 2 months ago

spring프로젝트의 경우 대부분 controller, service, repository로 계층화된 코드를 작성하는게 원칙인데 만약 이에 따를 경우 책임이 어느정도 분리된 코드라고 봐야할 까요? 아니면 좀 더 책임이 분리된 코드를 만들려면 어떻게 해야하는 걸까요? 최근 작성한 코드를 리팩토링해보면서 예시를 들어봐도 좋을 것 같습니다.

pythonstrup commented 2 months ago

책임이 분리된 코드

1급 컬렉션

JisuPark-dev commented 2 months ago
public class ReservationService{
  public void requestReservation(HospitalJobDto hospitalJobDto) {
          private final HospitalService hospitalService;
          private final ConsultGroupSerivce consultGroupSerivce;
          private final ConsultService consultService;
          private final FavoriteService favoriteService;

          // 병원 주소록 조회 및 생성 or 업데이트
          hospitalService.hospitalPatientGenerator(hospitalJobDto);

          // 진료 그룹 INSERT
          consultGroupSerivce.insertConsultGroup(hospitalJobDto);

          // 진료 INSERT
          consultService.insertConsult(hospitalJobDto);

          // 병원 즐겨찾기 추가
          favoriteService.addFavoriteHospital(hospitalJobDto);
      }
}

이런 코드는 그럼 서비스에 서비스를 붙인 것 뿐일까요. 만약 여기서 정말로 책임 지향으로 가고 싶다면, 각각의 도메인 객체가 책임을 가져가는게 맞는걸까요.

가령

public class ReservationService {
    private Hospital hospital;
    private ConsultGroup consultGroup;
    private Consult consult;
    private Favorite favorite;

    @Override
    public void requestReservation(HospitalJobDto hospitalJobDto) {

        // 병원 주소록 조회 및 생성 or 업데이트
        hospital.create(hospitalJobDto);

        // 진료 그룹 INSERT
        consultGroup.insert(hospitalJobDto);

        // 진료 INSERT
        consult.insert(hospitalJobDto);

        // 병원 즐겨찾기 추가
        favorite.add(hospitalJobDto);
    }
}

이런식으로 말이죠