mobilohas / object

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

[Chapter06] Tell Don't ask 와 모비닥 코드 #29

Closed JisuPark-dev closed 1 month ago

JisuPark-dev commented 1 month ago

모비닥 코드에 보면 서비스 로직에서 해당 값이 있는 지 물어서 검증해보고, 그것이 있다면 그 다음 로직을 수행하도록 하는 코드가 많습니다.

가령 consult를 생성할 때,

if(consult.getPatientSeq()== null || consult.getDoctorSeq() == null){
//예외처리
}

consultService.request();

이런 식입니다.

tell don't ask의 원칙에 따른다면 위 코드는

consult.request();

로 끝나고, consult(정보전문가 객체) 내부에서 자신의 데이터에 대한 검증이 이뤄지도록 하는게 맞는 것 같습니다. 즉 내부상태를 묻는 오퍼레이션을 행동을 요청하는 오퍼레이션으로 대체함으로써 인터페이스를 향상시킬 수 있습니다.

JisuPark-dev commented 1 month ago

하지만 이렇게 했을 때, 객체 안에 전혀 상관없는 오퍼레이션이 각기 위치할 수도 있다고 합니다.

JisuPark-dev commented 1 month ago

포키: 예외처리 할 때 서비스에서 담당할 로직이 있더라도, 도메인 안으로 넣을 수는 있을 것 같다. 도메인 안에서 unchecked exception인 경우에는 예외가 터진다는 사실을 클라이언트(객체 소비자입장)에서도 알 수 있어야 할 것 같다.