Closed JisuPark-dev closed 1 month ago
모비닥 코드에 보면 서비스 로직에서 해당 값이 있는 지 물어서 검증해보고, 그것이 있다면 그 다음 로직을 수행하도록 하는 코드가 많습니다.
가령 consult를 생성할 때,
if(consult.getPatientSeq()== null || consult.getDoctorSeq() == null){ //예외처리 } consultService.request();
이런 식입니다.
tell don't ask의 원칙에 따른다면 위 코드는
consult.request();
로 끝나고, consult(정보전문가 객체) 내부에서 자신의 데이터에 대한 검증이 이뤄지도록 하는게 맞는 것 같습니다. 즉 내부상태를 묻는 오퍼레이션을 행동을 요청하는 오퍼레이션으로 대체함으로써 인터페이스를 향상시킬 수 있습니다.
하지만 이렇게 했을 때, 객체 안에 전혀 상관없는 오퍼레이션이 각기 위치할 수도 있다고 합니다.
포키: 예외처리 할 때 서비스에서 담당할 로직이 있더라도, 도메인 안으로 넣을 수는 있을 것 같다. 도메인 안에서 unchecked exception인 경우에는 예외가 터진다는 사실을 클라이언트(객체 소비자입장)에서도 알 수 있어야 할 것 같다.
모비닥 코드에 보면 서비스 로직에서 해당 값이 있는 지 물어서 검증해보고, 그것이 있다면 그 다음 로직을 수행하도록 하는 코드가 많습니다.
가령 consult를 생성할 때,
이런 식입니다.
tell don't ask의 원칙에 따른다면 위 코드는
로 끝나고, consult(정보전문가 객체) 내부에서 자신의 데이터에 대한 검증이 이뤄지도록 하는게 맞는 것 같습니다. 즉 내부상태를 묻는 오퍼레이션을 행동을 요청하는 오퍼레이션으로 대체함으로써 인터페이스를 향상시킬 수 있습니다.